mirror of
https://github.com/Tolik-Trek/2D-Studio.git
synced 2026-06-15 01:21:33 +03:00
Old version
This commit is contained in:
commit
2db8eaa037
2094
2DSTUDIO.ASM
Normal file
2094
2DSTUDIO.ASM
Normal file
File diff suppressed because it is too large
Load Diff
1431
2DS_DISK.ASM
Normal file
1431
2DS_DISK.ASM
Normal file
File diff suppressed because it is too large
Load Diff
60
GRAFOPEN.ASM
Normal file
60
GRAFOPEN.ASM
Normal file
@ -0,0 +1,60 @@
|
||||
|
||||
APOINT EQU 8 ;#3D13
|
||||
GO DI
|
||||
LD IX,TAB00
|
||||
LD HL,#0000
|
||||
LD E,1
|
||||
LD C,#B0
|
||||
CALL APOINT
|
||||
LD IX,TAB01
|
||||
LD HL,#0703
|
||||
LD E,1
|
||||
LD C,#B0
|
||||
CALL APOINT
|
||||
LD IX,TAB02
|
||||
LD HL,#0826
|
||||
LD E,1
|
||||
LD C,#B0
|
||||
CALL APOINT
|
||||
LD IX,TAB03
|
||||
LD HL,#0000
|
||||
LD E,1
|
||||
LD C,#B0
|
||||
CALL APOINT
|
||||
LD IX,TAB04
|
||||
LD HL,#0000
|
||||
LD E,1
|
||||
LD C,#B0
|
||||
CALL APOINT
|
||||
RET
|
||||
|
||||
TAB00 DEFB 40,32,#00,#00,#20,#00,#08,#00
|
||||
TAB01 DEFB 33,23,#03,#07,#60,#00,#0B,#07
|
||||
TAB02 DEFB 01,21,038,#08,#60,#00,046,#08
|
||||
|
||||
TAB03 DEFB 08,02,028,#04,#60,#00,#24,#04
|
||||
TAB04 DEFB 02,02,037,#04,#60,#00,#2D,#04
|
||||
|
||||
NORTAB DEFB 12,23,#0F,#07,#20,#00,#17,#07
|
||||
SECTAB DEFB 12,23,#0F,#07,#60,#00,#17,#07
|
||||
|
||||
SETNWIN DI
|
||||
LD IX,NORTAB
|
||||
LD HL,#0F07
|
||||
LD E,1
|
||||
LD C,#B0
|
||||
CALL IPOINT
|
||||
EI
|
||||
RET
|
||||
|
||||
SETAWIN DI
|
||||
LD IX,SECTAB
|
||||
LD HL,#0F07
|
||||
LD E,1
|
||||
LD C,#B0
|
||||
CALL IPOINT
|
||||
EI
|
||||
RET
|
||||
|
||||
|
||||
|
||||
1327
INTERFACE/DLG.ASM
Normal file
1327
INTERFACE/DLG.ASM
Normal file
File diff suppressed because it is too large
Load Diff
374
INTERFACE/FACE.ASM
Normal file
374
INTERFACE/FACE.ASM
Normal file
@ -0,0 +1,374 @@
|
||||
|
||||
;ORG_ ORG #0000
|
||||
; DISP #0000
|
||||
INTA EQU #80
|
||||
; ROM__
|
||||
; A0000 JP NULL_0
|
||||
; DB #FF,#FF,#FF,#FF,#FF
|
||||
; A0008 PUSH AF ;INT BIOS
|
||||
; LD A,#00
|
||||
; OUT (#7C),A
|
||||
; POP AF
|
||||
; RET
|
||||
; RET
|
||||
; A0010 JP NULL_0 ;INT DOS
|
||||
; DB #FF,#FF,#FF,#FF,#FF
|
||||
; A0018 JP NULL_0 ;INT DISK
|
||||
; DB #FF,#FF,#FF,#FF,#FF
|
||||
; A0020 JP RST_20 ;
|
||||
; DB #FF,#FF,#FF,#FF,#FF
|
||||
; A0028 JP NULL_0 ;
|
||||
; DB #FF,#FF,#FF,#FF,#FF
|
||||
; A0030 JP NULL_0 ;INT MOUSE
|
||||
; DB #FF,#FF,#FF,#FF,#FF
|
||||
; A0038 JP RST_38 ;INTERRUPT
|
||||
;
|
||||
; BLOCK #100-$,#FF
|
||||
|
||||
JP INIT
|
||||
JP DLGinit
|
||||
JP GETPARM
|
||||
JP POPUP
|
||||
JP RECTAN
|
||||
JP BPUSH
|
||||
JP BPOP
|
||||
JP POINT
|
||||
JP HZ2LINE
|
||||
JP HRUBBER
|
||||
JP VRUBBER
|
||||
JP PLACE
|
||||
JP CHARS
|
||||
JP OPTIMIZ
|
||||
JP SAVERG
|
||||
JP RESTRG
|
||||
JP CONST
|
||||
JP DESTR
|
||||
JP LCONST
|
||||
JP LDESTR
|
||||
JP LOBJECT
|
||||
JP WAITMSG
|
||||
JP INTMOUS
|
||||
JP INTON
|
||||
JP INTOFF
|
||||
|
||||
JP LST_INI
|
||||
JP LST_CLR
|
||||
JP SBV_WRK
|
||||
JP EDITBOX
|
||||
|
||||
JP SBODY
|
||||
JP SBMAX
|
||||
JP SBWIN
|
||||
JP SBVAL
|
||||
JP POSSX
|
||||
JP POSSY
|
||||
JP RSBMAX
|
||||
JP RSBWIN
|
||||
JP RSBVAL
|
||||
JP RPOSSX
|
||||
JP RPOSSY
|
||||
JP PCHARX
|
||||
|
||||
JP DLGopen
|
||||
JP DLGclos
|
||||
|
||||
JP XFRAME
|
||||
|
||||
JP HBAR
|
||||
JP SBH_WRK
|
||||
JP SBLEN
|
||||
JP RSBLEN
|
||||
JP SBHGT
|
||||
JP RSBHGT
|
||||
JP INITSPR
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
|
||||
NONE SCF
|
||||
RET
|
||||
|
||||
RST_38 ;MAIN INTERUPT
|
||||
EI
|
||||
RET
|
||||
|
||||
NULL_0 SCF
|
||||
RET
|
||||
|
||||
RST_20 PUSH HL
|
||||
PUSH DE
|
||||
LD HL,4
|
||||
ADD HL,SP
|
||||
LD E,(HL)
|
||||
INC (HL)
|
||||
INC HL
|
||||
LD D,(HL)
|
||||
JP NZ,RST401
|
||||
INC (HL)
|
||||
RST401 EX DE,HL
|
||||
LD L,(HL)
|
||||
LD H,ADRST20/256
|
||||
LD E,(HL)
|
||||
INC H
|
||||
LD D,(HL)
|
||||
EX DE,HL
|
||||
POP DE
|
||||
EX (SP),HL
|
||||
RET
|
||||
|
||||
I500 SCF
|
||||
RET
|
||||
|
||||
USERini LD A,2
|
||||
SCF
|
||||
RET
|
||||
|
||||
SBODY LD (BODY),A
|
||||
RET
|
||||
|
||||
SBMAX LD (SB_MAX),HL
|
||||
RET
|
||||
|
||||
SBWIN LD (SB_WIN),HL
|
||||
RET
|
||||
|
||||
SBVAL LD (SB_VAL),HL
|
||||
RET
|
||||
|
||||
POSSX LD (POSS_X),HL
|
||||
RET
|
||||
|
||||
POSSY LD (POSS_Y),HL
|
||||
RET
|
||||
|
||||
RSBMAX LD HL,(SB_MAX)
|
||||
RET
|
||||
|
||||
RSBWIN LD HL,(SB_WIN)
|
||||
RET
|
||||
|
||||
RSBVAL LD HL,(SB_VAL)
|
||||
RET
|
||||
|
||||
SBLEN LD (SB_LEN),HL
|
||||
RET
|
||||
|
||||
RSBLEN LD HL,(SB_LEN)
|
||||
RET
|
||||
|
||||
SBHGT LD (SB_HGT),HL
|
||||
RET
|
||||
|
||||
RSBHGT LD HL,(SB_HGT)
|
||||
RET
|
||||
|
||||
|
||||
|
||||
RPOSSX LD HL,(POSS_X)
|
||||
RET
|
||||
|
||||
RPOSSY LD HL,(POSS_Y)
|
||||
RET
|
||||
|
||||
|
||||
INITSPR LD (BSPRADR+1),HL
|
||||
RET
|
||||
|
||||
INCLUDE "WINDOW-H.asm"
|
||||
INCLUDE "DLG.ASM"
|
||||
INCLUDE "INTMOUSE.ASM"
|
||||
INCLUDE "LOBJECT.ASM"
|
||||
|
||||
ALIGN 256
|
||||
; ENT
|
||||
; ORG $/256+1*256
|
||||
; DISP $-#8000
|
||||
FONTSIZ ;DS 32,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
; ! " # $ % & ' ( ) * + , - . /
|
||||
DB 6,3,5,6,6,7,7,3,4,4,6,6,4,6,3,6
|
||||
; 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
|
||||
DB 6,4,6,6,6,6,6,6,6,6,3,4,5,7,5,6
|
||||
; @ A B C D E F G H I J K L M N O
|
||||
DB 6,6,6,6,6,6,6,6,6,4,5,6,6,6,6,6
|
||||
; P Q R S T U V W X Y Z [ \ ] ^ _
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,4,6,4,5,6
|
||||
; ` a b c d e f g h i j k l m n o
|
||||
DB 3,6,6,6,6,6,5,6,6,4,5,5,4,6,6,6
|
||||
; p q r s t u v w x y z { | } ~
|
||||
DB 6,6,6,6,5,6,6,6,6,6,6,4,3,4,6,6
|
||||
|
||||
; A B V G D E J Z I J K L M N O P
|
||||
DB 6,6,6,6,7,6,6,6,6,6,6,6,6,6,6,6
|
||||
; R S T U F H C h W W X Y X E U Q
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,7,6,6,7,6
|
||||
; a b v g d e j z i j k l m n o p
|
||||
DB 6,6,6,6,7,6,6,6,6,6,6,6,6,6,6,6
|
||||
; DS 48,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
|
||||
; r s t u f h c h w w x y x e u q
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,6
|
||||
DB 6,6,6,6,6,6,6,6,5,6,6,6,5,5,6,1
|
||||
|
||||
FONTER ;INCBIN "IFFWIN2.BIN"
|
||||
|
||||
; Data block size: 2048
|
||||
DB #00,#70,#70,#00,#00,#00,#00,#00,#F8,#00,#F8,#38,#70,#38,#78,#20
|
||||
DB #40,#08,#20,#50,#78,#70,#00,#20,#20,#20,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#40,#50,#50,#20,#C8,#20,#C0,#20,#40,#48,#20,#00,#00,#00,#08
|
||||
DB #70,#40,#70,#70,#10,#F8,#70,#F8,#70,#70,#00,#00,#30,#00,#C0,#70
|
||||
DB #78,#70,#F0,#70,#E0,#F8,#F8,#70,#88,#E0,#10,#90,#80,#88,#88,#70
|
||||
DB #F0,#70,#F0,#70,#F8,#88,#88,#88,#88,#88,#F8,#E0,#80,#E0,#20,#00
|
||||
DB #C0,#00,#80,#00,#08,#00,#30,#00,#80,#40,#10,#80,#C0,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#40,#00,#00,#00,#00,#00,#00,#60,#40,#C0,#68,#00
|
||||
DB #38,#F0,#F0,#F8,#38,#F8,#A8,#70,#88,#A8,#90,#38,#88,#88,#70,#F8
|
||||
DB #F0,#70,#F8,#88,#70,#88,#88,#88,#A8,#A8,#C0,#84,#80,#F0,#98,#78
|
||||
DB #00,#78,#00,#00,#00,#00,#00,#00,#00,#20,#00,#00,#00,#00,#00,#00
|
||||
DB #88,#A8,#64,#20,#20,#20,#50,#00,#00,#50,#50,#00,#50,#50,#20,#00
|
||||
DB #20,#20,#00,#20,#00,#20,#20,#50,#50,#00,#50,#00,#50,#00,#50,#20
|
||||
DB #50,#00,#00,#50,#20,#00,#00,#50,#20,#20,#00,#FC,#00,#E0,#1C,#FC
|
||||
DB #00,#00,#00,#00,#20,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #50,#50,#00,#00,#00,#20,#00,#00,#00,#00,#00,#1C,#A0,#E0,#00,#80
|
||||
DB #00,#88,#F8,#50,#20,#70,#20,#00,#F8,#20,#D8,#18,#88,#28,#48,#A8
|
||||
DB #60,#18,#70,#50,#A8,#88,#00,#70,#70,#20,#20,#20,#00,#00,#00,#00
|
||||
DB #00,#40,#50,#F8,#78,#D8,#50,#40,#40,#20,#30,#20,#00,#00,#00,#18
|
||||
DB #88,#C0,#88,#88,#30,#80,#80,#08,#88,#88,#40,#20,#60,#F8,#60,#88
|
||||
DB #94,#88,#88,#88,#90,#80,#80,#88,#88,#40,#10,#A0,#80,#D8,#C8,#88
|
||||
DB #88,#88,#88,#80,#20,#88,#88,#88,#50,#50,#10,#80,#C0,#20,#50,#00
|
||||
DB #80,#70,#80,#70,#08,#70,#40,#70,#80,#00,#00,#90,#40,#D0,#B0,#70
|
||||
DB #F0,#78,#B0,#78,#E0,#88,#88,#88,#88,#88,#F8,#40,#40,#40,#B0,#30
|
||||
DB #48,#80,#88,#80,#48,#80,#A8,#88,#88,#A8,#A0,#48,#D8,#88,#88,#88
|
||||
DB #88,#88,#20,#88,#A8,#50,#88,#88,#A8,#A8,#40,#84,#80,#08,#A4,#88
|
||||
DB #70,#80,#F0,#F8,#38,#70,#A8,#70,#88,#A8,#88,#38,#88,#88,#70,#F8
|
||||
DB #20,#54,#98,#20,#20,#20,#50,#00,#00,#50,#50,#00,#50,#50,#20,#00
|
||||
DB #20,#20,#00,#20,#00,#20,#20,#50,#50,#00,#50,#00,#50,#00,#50,#20
|
||||
DB #50,#00,#00,#50,#20,#00,#00,#50,#20,#20,#00,#FC,#00,#E0,#1C,#FC
|
||||
DB #F0,#70,#F8,#88,#70,#88,#88,#88,#A8,#A8,#C0,#88,#80,#F0,#98,#78
|
||||
DB #F8,#70,#60,#18,#10,#20,#20,#68,#00,#00,#00,#10,#50,#10,#00,#80
|
||||
DB #00,#D8,#A8,#F8,#70,#20,#70,#20,#D8,#50,#A8,#28,#88,#20,#78,#70
|
||||
DB #70,#38,#F8,#50,#A8,#60,#00,#F8,#F8,#20,#30,#60,#80,#50,#20,#F8
|
||||
DB #00,#40,#00,#50,#A0,#30,#20,#80,#40,#20,#FC,#F8,#00,#F8,#00,#30
|
||||
DB #98,#40,#08,#30,#50,#F0,#F0,#10,#70,#88,#00,#00,#C0,#00,#30,#10
|
||||
DB #AC,#88,#F0,#80,#88,#F0,#F0,#80,#F8,#40,#10,#C0,#80,#A8,#A8,#88
|
||||
DB #88,#88,#88,#70,#20,#88,#88,#88,#20,#20,#20,#80,#60,#20,#88,#00
|
||||
DB #40,#08,#F0,#88,#78,#88,#E0,#88,#F0,#C0,#10,#A0,#40,#A8,#C8,#88
|
||||
DB #88,#88,#C8,#80,#40,#88,#88,#A8,#50,#88,#10,#80,#00,#20,#00,#48
|
||||
DB #88,#F0,#F0,#80,#48,#F0,#70,#30,#98,#98,#C0,#48,#A8,#F8,#88,#88
|
||||
DB #88,#80,#20,#78,#A8,#20,#88,#88,#A8,#A8,#70,#E4,#F0,#78,#E4,#88
|
||||
DB #08,#70,#88,#80,#48,#88,#A8,#88,#98,#98,#90,#48,#D8,#88,#88,#88
|
||||
DB #88,#A8,#64,#20,#20,#E0,#50,#00,#E0,#D0,#50,#F0,#D0,#50,#E0,#00
|
||||
DB #20,#20,#00,#20,#00,#20,#3C,#50,#5C,#7C,#DC,#FC,#5C,#FC,#DC,#FC
|
||||
DB #50,#FC,#00,#50,#3C,#3C,#00,#50,#FC,#20,#00,#FC,#00,#E0,#1C,#FC
|
||||
DB #88,#88,#20,#88,#A8,#50,#88,#88,#A8,#A8,#70,#C8,#F0,#08,#A4,#88
|
||||
DB #80,#88,#30,#30,#28,#20,#00,#B0,#20,#00,#00,#10,#50,#60,#00,#80
|
||||
DB #00,#88,#F8,#F8,#F8,#F8,#F8,#70,#88,#88,#70,#70,#88,#20,#48,#D8
|
||||
DB #78,#78,#20,#50,#68,#50,#00,#20,#20,#20,#F8,#F8,#80,#F8,#70,#70
|
||||
DB #00,#40,#00,#50,#70,#60,#58,#00,#40,#20,#30,#20,#00,#00,#00,#60
|
||||
DB #A8,#40,#70,#08,#90,#08,#88,#20,#88,#78,#00,#00,#60,#F8,#60,#20
|
||||
DB #BC,#F8,#88,#80,#88,#80,#80,#98,#88,#40,#10,#A0,#80,#88,#98,#88
|
||||
DB #F0,#A8,#F0,#08,#20,#88,#88,#A8,#20,#20,#40,#80,#30,#20,#00,#00
|
||||
DB #00,#78,#88,#80,#88,#F0,#40,#88,#88,#40,#10,#C0,#40,#A8,#88,#88
|
||||
DB #88,#88,#80,#70,#40,#88,#50,#A8,#20,#78,#20,#80,#40,#20,#00,#84
|
||||
DB #F8,#88,#88,#80,#48,#80,#A8,#08,#A8,#A8,#A0,#48,#88,#88,#88,#88
|
||||
DB #F0,#80,#20,#08,#A8,#20,#88,#78,#A8,#A8,#48,#94,#88,#08,#A4,#78
|
||||
DB #78,#88,#F0,#80,#48,#F0,#70,#30,#A8,#A8,#E0,#48,#A8,#F8,#88,#88
|
||||
DB #20,#54,#98,#20,#20,#20,#50,#00,#20,#10,#50,#10,#10,#50,#20,#00
|
||||
DB #20,#20,#00,#20,#00,#20,#20,#50,#40,#40,#00,#00,#40,#00,#00,#00
|
||||
DB #50,#00,#00,#50,#20,#20,#00,#50,#20,#20,#00,#FC,#00,#E0,#1C,#FC
|
||||
DB #88,#80,#20,#78,#A8,#20,#88,#78,#A8,#A8,#48,#A8,#88,#78,#E4,#88
|
||||
DB #F0,#F0,#18,#60,#20,#20,#F8,#00,#50,#00,#00,#10,#50,#80,#00,#80
|
||||
DB #00,#F8,#88,#F8,#F8,#A8,#F8,#70,#88,#88,#70,#88,#70,#20,#48,#D8
|
||||
DB #70,#38,#F8,#00,#28,#50,#00,#F8,#20,#F8,#30,#60,#80,#50,#F8,#20
|
||||
DB #00,#00,#00,#F8,#28,#D8,#90,#00,#40,#20,#48,#20,#60,#00,#C0,#C0
|
||||
DB #C8,#40,#80,#88,#F8,#88,#88,#20,#88,#08,#40,#20,#30,#00,#C0,#00
|
||||
DB #80,#88,#88,#88,#90,#80,#80,#88,#88,#40,#90,#90,#80,#88,#88,#88
|
||||
DB #80,#98,#90,#88,#20,#88,#50,#F8,#50,#20,#80,#80,#18,#20,#00,#00
|
||||
DB #00,#88,#88,#80,#88,#80,#40,#78,#88,#40,#10,#A0,#40,#A8,#88,#88
|
||||
DB #F0,#78,#80,#08,#40,#88,#50,#A8,#50,#08,#40,#40,#40,#40,#00,#84
|
||||
DB #88,#88,#88,#80,#48,#80,#A8,#88,#C8,#C8,#90,#48,#88,#88,#88,#88
|
||||
DB #80,#88,#20,#88,#70,#50,#88,#08,#A8,#A8,#48,#94,#88,#08,#A4,#48
|
||||
DB #88,#88,#88,#80,#48,#80,#A8,#88,#C8,#C8,#90,#48,#88,#88,#88,#88
|
||||
DB #88,#A8,#64,#20,#E0,#E0,#D0,#F0,#E0,#D0,#50,#D0,#F0,#F0,#E0,#E0
|
||||
DB #3C,#FC,#FC,#3C,#FC,#FC,#3C,#5C,#7C,#5C,#FC,#DC,#5C,#FC,#DC,#FC
|
||||
DB #FC,#FC,#FC,#7C,#3C,#3C,#7C,#FC,#FC,#E0,#3C,#FC,#FC,#E0,#1C,#00
|
||||
DB #F0,#88,#20,#08,#70,#50,#88,#08,#A8,#A8,#48,#A8,#88,#08,#A4,#78
|
||||
DB #80,#80,#30,#30,#20,#20,#00,#68,#50,#30,#00,#D0,#50,#F0,#78,#80
|
||||
DB #00,#A8,#D8,#70,#70,#20,#20,#20,#D8,#50,#A8,#88,#20,#E0,#58,#70
|
||||
DB #60,#18,#70,#50,#28,#30,#78,#70,#20,#70,#20,#20,#F8,#00,#00,#00
|
||||
DB #00,#40,#00,#50,#F0,#98,#68,#00,#20,#40,#00,#00,#60,#00,#C0,#80
|
||||
DB #70,#E0,#F8,#70,#10,#70,#70,#20,#70,#70,#00,#40,#00,#00,#00,#20
|
||||
DB #78,#88,#F0,#70,#E0,#F8,#80,#78,#88,#E0,#60,#88,#F8,#88,#88,#70
|
||||
DB #80,#78,#88,#70,#20,#70,#20,#50,#88,#20,#F8,#E0,#08,#E0,#00,#00
|
||||
DB #00,#78,#F0,#78,#78,#78,#E0,#08,#88,#E0,#90,#90,#E0,#A8,#88,#70
|
||||
DB #80,#08,#80,#F0,#30,#70,#20,#50,#88,#F0,#F8,#60,#40,#C0,#00,#FC
|
||||
DB #88,#F0,#F0,#80,#FC,#F8,#A8,#70,#88,#88,#88,#88,#88,#88,#70,#88
|
||||
DB #80,#70,#20,#70,#20,#88,#FC,#08,#F8,#FC,#70,#E4,#F0,#F0,#98,#88
|
||||
DB #78,#70,#F0,#80,#FC,#78,#A8,#70,#88,#88,#88,#C8,#88,#88,#70,#88
|
||||
DB #20,#54,#98,#20,#20,#20,#50,#50,#20,#50,#50,#50,#00,#00,#00,#20
|
||||
DB #00,#00,#20,#20,#00,#20,#20,#50,#00,#50,#00,#50,#50,#00,#50,#00
|
||||
DB #00,#20,#50,#00,#00,#20,#50,#50,#20,#00,#20,#FC,#FC,#E0,#1C,#00
|
||||
DB #80,#70,#20,#70,#20,#88,#FC,#08,#F8,#FC,#70,#C8,#F0,#F0,#98,#88
|
||||
DB #F8,#78,#60,#18,#20,#A0,#20,#B0,#20,#30,#30,#70,#00,#00,#78,#80
|
||||
DB #00,#88,#F8,#20,#20,#70,#70,#00,#F8,#20,#D8,#88,#70,#C0,#D8,#A8
|
||||
DB #40,#08,#20,#00,#28,#88,#78,#20,#20,#20,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#20,#00,#00,#00,#00,#00,#00,#00,#C0,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#70,#00,#00,#60,#00,#00,#00,#00,#00
|
||||
DB #80,#08,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#84,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#04,#00,#00,#04,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#84,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #88,#A8,#64,#20,#20,#20,#50,#50,#20,#50,#50,#50,#00,#00,#00,#20
|
||||
DB #00,#00,#20,#20,#00,#20,#20,#50,#00,#50,#00,#50,#50,#00,#50,#00
|
||||
DB #00,#20,#50,#00,#00,#20,#50,#50,#20,#00,#20,#FC,#FC,#E0,#1C,#00
|
||||
DB #80,#00,#00,#00,#20,#00,#04,#00,#00,#04,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#20,#40,#00,#00,#00,#00,#00,#30,#00,#00,#78,#80
|
||||
DB #00,#70,#70,#00,#00,#00,#00,#00,#F8,#00,#F8,#70,#20,#00,#C0,#20
|
||||
DB #00,#00,#00,#00,#00,#70,#00,#F8,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#FC
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #20,#54,#98,#20,#20,#20,#50,#50,#20,#50,#50,#50,#00,#00,#00,#20
|
||||
DB #00,#00,#20,#20,#00,#20,#20,#50,#00,#50,#00,#50,#50,#00,#50,#00
|
||||
DB #00,#20,#50,#00,#00,#20,#50,#50,#20,#00,#20,#FC,#FC,#E0,#1C,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#FC,#FC,#20,#00,#00,#00,#00,#00,#00,#10,#00,#00,#78,#80
|
||||
|
||||
; INCLUDE "keyinter.asm"
|
||||
|
||||
ADRST20;
|
||||
DB I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF
|
||||
DB I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF
|
||||
DS #F0
|
||||
|
||||
DB I500/256,I500/256,I500/256,I500/256,I500/256,I500/256,I500/256,I500/256
|
||||
DB I500/256,I500/256,I500/256,I500/256,I500/256,I500/256,I500/256,I500/256
|
||||
DS #F0
|
||||
|
||||
; ENT
|
||||
_______
|
||||
|
||||
|
||||
241
INTERFACE/FACE_ALT.ASM
Normal file
241
INTERFACE/FACE_ALT.ASM
Normal file
@ -0,0 +1,241 @@
|
||||
|
||||
;ORG_ ORG #0000
|
||||
; DISP #0000
|
||||
INTA EQU #80
|
||||
; ROM__
|
||||
; A0000 JP NULL_0
|
||||
; DB #FF,#FF,#FF,#FF,#FF
|
||||
; A0008 PUSH AF ;INT BIOS
|
||||
; LD A,#00
|
||||
; OUT (#7C),A
|
||||
; POP AF
|
||||
; RET
|
||||
; RET
|
||||
; A0010 JP NULL_0 ;INT DOS
|
||||
; DB #FF,#FF,#FF,#FF,#FF
|
||||
; A0018 JP NULL_0 ;INT DISK
|
||||
; DB #FF,#FF,#FF,#FF,#FF
|
||||
; A0020 JP RST_20 ;
|
||||
; DB #FF,#FF,#FF,#FF,#FF
|
||||
; A0028 JP NULL_0 ;
|
||||
; DB #FF,#FF,#FF,#FF,#FF
|
||||
; A0030 JP NULL_0 ;INT MOUSE
|
||||
; DB #FF,#FF,#FF,#FF,#FF
|
||||
; A0038 JP RST_38 ;INTERRUPT
|
||||
|
||||
; DS 197
|
||||
; ORG #0200
|
||||
JP INIT
|
||||
JP DLGinit
|
||||
JP GETPARM
|
||||
JP POPUP
|
||||
JP RECTAN
|
||||
JP BPUSH
|
||||
JP BPOP
|
||||
JP POINT
|
||||
JP HZ2LINE
|
||||
JP HRUBBER
|
||||
JP VRUBBER
|
||||
JP PLACE
|
||||
JP CHARS
|
||||
JP OPTIMIZ
|
||||
JP SAVERG
|
||||
JP RESTRG
|
||||
JP CONST
|
||||
JP DESTR
|
||||
JP LCONST
|
||||
JP LDESTR
|
||||
JP LOBJECT
|
||||
JP WAITMSG
|
||||
JP INTMOUS
|
||||
JP INTON
|
||||
JP INTOFF
|
||||
|
||||
JP LST_INI
|
||||
JP LST_CLR
|
||||
JP SBV_WRK
|
||||
JP EDITBOX
|
||||
|
||||
JP SBODY
|
||||
JP SBMAX
|
||||
JP SBWIN
|
||||
JP SBVAL
|
||||
JP POSSX
|
||||
JP POSSY
|
||||
JP RSBMAX
|
||||
JP RSBWIN
|
||||
JP RSBVAL
|
||||
JP RPOSSX
|
||||
JP RPOSSY
|
||||
JP PCHARX
|
||||
|
||||
JP DLGopen
|
||||
JP DLGclos
|
||||
|
||||
JP XFRAME
|
||||
|
||||
JP HBAR
|
||||
JP SBH_WRK
|
||||
JP SBLEN
|
||||
JP RSBLEN
|
||||
JP SBHGT
|
||||
JP RSBHGT
|
||||
JP INITSPR
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
JP NONE
|
||||
|
||||
NONE SCF
|
||||
RET
|
||||
|
||||
RST_38 ;MAIN INTERUPT
|
||||
EI
|
||||
RET
|
||||
|
||||
NULL_0 SCF
|
||||
RET
|
||||
|
||||
RST_20 PUSH HL
|
||||
PUSH DE
|
||||
LD HL,4
|
||||
ADD HL,SP
|
||||
LD E,(HL)
|
||||
INC (HL)
|
||||
INC HL
|
||||
LD D,(HL)
|
||||
JP NZ,RST401
|
||||
INC (HL)
|
||||
RST401 EX DE,HL
|
||||
LD L,(HL)
|
||||
LD H,ADRST20/256
|
||||
LD E,(HL)
|
||||
INC H
|
||||
LD D,(HL)
|
||||
EX DE,HL
|
||||
POP DE
|
||||
EX (SP),HL
|
||||
RET
|
||||
|
||||
I500 SCF
|
||||
RET
|
||||
|
||||
USERini LD A,2
|
||||
SCF
|
||||
RET
|
||||
|
||||
SBODY LD (BODY),A
|
||||
RET
|
||||
|
||||
SBMAX LD (SB_MAX),HL
|
||||
RET
|
||||
|
||||
SBWIN LD (SB_WIN),HL
|
||||
RET
|
||||
|
||||
SBVAL LD (SB_VAL),HL
|
||||
RET
|
||||
|
||||
POSSX LD (POSS_X),HL
|
||||
RET
|
||||
|
||||
POSSY LD (POSS_Y),HL
|
||||
RET
|
||||
|
||||
RSBMAX LD HL,(SB_MAX)
|
||||
RET
|
||||
|
||||
RSBWIN LD HL,(SB_WIN)
|
||||
RET
|
||||
|
||||
RSBVAL LD HL,(SB_VAL)
|
||||
RET
|
||||
|
||||
SBLEN LD (SB_LEN),HL
|
||||
RET
|
||||
|
||||
RSBLEN LD HL,(SB_LEN)
|
||||
RET
|
||||
|
||||
SBHGT LD (SB_HGT),HL
|
||||
RET
|
||||
|
||||
RSBHGT LD HL,(SB_HGT)
|
||||
RET
|
||||
|
||||
|
||||
|
||||
RPOSSX LD HL,(POSS_X)
|
||||
RET
|
||||
|
||||
RPOSSY LD HL,(POSS_Y)
|
||||
RET
|
||||
|
||||
|
||||
INITSPR LD (BSPRADR+1),HL
|
||||
RET
|
||||
|
||||
INCLUDE "WINDOW-H.asm"
|
||||
INCLUDE "DLG.ASM"
|
||||
INCLUDE "INTMOUSE.ASM"
|
||||
INCLUDE "LOBJECT.ASM"
|
||||
|
||||
ALIGN 256
|
||||
; ENT
|
||||
; ORG $/256+1*256
|
||||
; DISP $-#8000
|
||||
FONTSIZ ;DS 32,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
; ! " # $ % & ' ( ) * + , - . /
|
||||
DB 6,3,5,6,6,7,7,3,4,4,6,6,4,6,3,7
|
||||
; 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
|
||||
DB 6,4,6,6,6,6,6,6,6,6,3,4,6,7,6,6
|
||||
; @ A B C D E F G H I J K L M N O
|
||||
DB 7,6,6,6,6,6,6,6,6,3,5,6,6,8,6,6
|
||||
; P Q R S T U PE W X Y Z [ \ ] ^ _
|
||||
DB 6,6,6,6,6,6,6,8,6,6,6,4,6,4,5,6
|
||||
; ` a b c d e f g h i j k l m n o
|
||||
DB 3,6,6,6,6,6,4,6,6,2,5,6,2,8,6,6
|
||||
; p q r s t u v w x y z { | } ~
|
||||
DB 6,6,3,5,3,6,6,8,6,6,6,4,3,4,6,6
|
||||
|
||||
; A B PE G D E J Z I J K L M N O P
|
||||
DB 6,6,6,6,7,6,8,6,6,6,6,6,8,6,6,6
|
||||
; R S T U F H C h W W X Y X E U Q
|
||||
DB 6,6,6,6,8,6,6,6,8,8,7,7,6,6,8,6
|
||||
; a b v g d e j z i j k l m n o p
|
||||
DB 6,6,6,6,7,6,8,6,6,6,6,6,8,6,6,6
|
||||
; DS 48,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
|
||||
; r s t u f h c h w w x y x e u q
|
||||
DB 6,6,6,5,8,5,6,6,8,8,7,7,6,6,7,6
|
||||
DB 6,6,6,6,6,6,6,6,5,6,6,6,5,5,6,1
|
||||
|
||||
FONTER INCBIN "IFFWIN2.BIN"
|
||||
|
||||
ADRST20;
|
||||
DB I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF
|
||||
DB I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF,I500&#FF
|
||||
DS #F0
|
||||
|
||||
DB I500/256,I500/256,I500/256,I500/256,I500/256,I500/256,I500/256,I500/256
|
||||
DB I500/256,I500/256,I500/256,I500/256,I500/256,I500/256,I500/256,I500/256
|
||||
DS #F0
|
||||
|
||||
; ENT
|
||||
_______
|
||||
|
||||
BIN
INTERFACE/IFFWIN2.BIN
Normal file
BIN
INTERFACE/IFFWIN2.BIN
Normal file
Binary file not shown.
666
INTERFACE/INTMOUSE.ASM
Normal file
666
INTERFACE/INTMOUSE.ASM
Normal file
@ -0,0 +1,666 @@
|
||||
|
||||
;[BEGIN]
|
||||
CMOUSE EQU #1B
|
||||
DMOUSE EQU #1A
|
||||
VSIZEX EQU 320
|
||||
VSIZEY EQU 256
|
||||
|
||||
X EQU #EE
|
||||
W EQU #EF
|
||||
N EQU #FF
|
||||
|
||||
; MOUSE SOFTWARE SPECIFICATION
|
||||
;---------------------------------------------
|
||||
; COMMAND 00h (INITIALIZATION)
|
||||
;
|
||||
; RETURN: NC - MOUSE PRESENT
|
||||
; C - MOUSE ABSENT
|
||||
;---------------------------------------------
|
||||
; COMMAND 01h (SHOW MOUSE CURSOR)
|
||||
;
|
||||
; RETURN: NC - DONE
|
||||
; C - MOUSE ON SCREEN
|
||||
;---------------------------------------------
|
||||
; COMMAND 02h (HIDE MOUSE CURSOR)
|
||||
;
|
||||
; RETURN: NC - DONE
|
||||
; C - NONE MOUSE
|
||||
;---------------------------------------------
|
||||
; COMMAND 03h (READ MOUSE STATE)
|
||||
;
|
||||
; RETURN: HL - X COORD
|
||||
; DE - Y COORD
|
||||
; A - BUTTONS D2-D0 (MIDDLE,RIGHT,LEFT)
|
||||
;---------------------------------------------
|
||||
; COMMAND 04h (GOTO MOUSE CURSOR)
|
||||
;
|
||||
; INPUT: HL - X COORD
|
||||
; DE - Y COORD
|
||||
;---------------------------------------------
|
||||
; COMMAND 05h (GET CLICK FROM BUFFER)
|
||||
;
|
||||
; RETURN: NC - BUFFER EMPTY
|
||||
; C - CLICK
|
||||
; HL - X COORD
|
||||
; DE - Y COORD
|
||||
; A - BUTTONS
|
||||
;---------------------------------------------
|
||||
; COMMAND 06h (SELECT CURSOR)
|
||||
;
|
||||
; INPUT: A - CURSOR NUMBER
|
||||
;---------------------------------------------
|
||||
; ERRORS: 0 - NO ERROR
|
||||
; 1 - COMMAND NOT PRESENT
|
||||
; 2 - DEVICE ABSENT
|
||||
; 3 - CURSOR ON (UZHE)
|
||||
; 4 - CURSOR OFF (UZHE)
|
||||
|
||||
INTMOUS INC C
|
||||
DEC C
|
||||
JP Z,MS_INIT
|
||||
DEC C
|
||||
JP Z,MS_SHOW
|
||||
DEC C
|
||||
JP Z,MS_HIDD
|
||||
DEC C
|
||||
JP Z,MS_READ
|
||||
DEC C
|
||||
JP Z,MS_GOTO
|
||||
DEC C
|
||||
JP Z,MS_CLIK
|
||||
DEC C
|
||||
JP Z,MS_CURS
|
||||
LD A,1
|
||||
SCF
|
||||
RET
|
||||
|
||||
MS_INIT DI
|
||||
LD A,85
|
||||
OUT (#10),A
|
||||
LD A,45
|
||||
OUT (#10),A
|
||||
LD A,0
|
||||
OUT (CMOUSE),A
|
||||
LD A,1
|
||||
OUT (CMOUSE),A
|
||||
LD A,0
|
||||
OUT (CMOUSE),A
|
||||
LD A,3
|
||||
OUT (CMOUSE),A
|
||||
LD A,#41
|
||||
OUT (CMOUSE),A
|
||||
LD A,4
|
||||
OUT (CMOUSE),A
|
||||
LD A,#47
|
||||
OUT (CMOUSE),A
|
||||
LD A,5
|
||||
OUT (CMOUSE),A
|
||||
LD A,#60
|
||||
OUT (CMOUSE),A
|
||||
EI
|
||||
XOR A
|
||||
RET
|
||||
|
||||
MS_SHOW PUSH IX
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
EX AF,AF'
|
||||
PUSH AF
|
||||
LD HL,(PIX_X)
|
||||
LD DE,(PIX_Y)
|
||||
DI
|
||||
CALL MOUSE
|
||||
XOR A
|
||||
LD (REFRESH+1),A
|
||||
EI
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
POP DE
|
||||
POP HL
|
||||
POP IX
|
||||
XOR A
|
||||
RET
|
||||
|
||||
MS_HIDD PUSH IX
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
EX AF,AF'
|
||||
PUSH AF
|
||||
DI
|
||||
LD A,1
|
||||
LD (REFRESH+1),A
|
||||
CALL RESTORE
|
||||
EI
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
POP DE
|
||||
POP HL
|
||||
POP IX
|
||||
XOR A
|
||||
RET
|
||||
|
||||
MS_READ LD HL,(PIX_X)
|
||||
LD DE,(PIX_Y)
|
||||
LD A,(MB)
|
||||
AND A
|
||||
RET
|
||||
|
||||
MS_GOTO PUSH IX
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
LD (PIX_X),HL
|
||||
LD (PIX_Y),DE
|
||||
EX AF,AF'
|
||||
PUSH AF
|
||||
DI
|
||||
CALL REFRESH
|
||||
EI
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
POP DE
|
||||
POP HL
|
||||
POP IX
|
||||
XOR A
|
||||
RET
|
||||
|
||||
MS_CLIK CALL GCLICK
|
||||
LD H,B
|
||||
LD L,C
|
||||
RET
|
||||
|
||||
MS_CURS LD HL,MS_BMP
|
||||
INC A
|
||||
LD D,H
|
||||
LD E,L
|
||||
LD BC,140
|
||||
MS_CUR2 ADD HL,BC
|
||||
DEC A
|
||||
JP NZ,MS_CUR2
|
||||
DI
|
||||
LDIR
|
||||
EI
|
||||
XOR A
|
||||
RET
|
||||
|
||||
RESTORE IN A,(PAGE1)
|
||||
LD B,A
|
||||
IN A,(Y_PORT)
|
||||
LD C,A
|
||||
PUSH BC
|
||||
LD A,#50
|
||||
OUT (PAGE1),A
|
||||
REST_X LD HL,0
|
||||
REST_Y LD DE,0
|
||||
REST_H LD BC,0
|
||||
LD A,E
|
||||
EX AF,AF'
|
||||
LD DE,#4040
|
||||
ADD HL,DE
|
||||
LD XH,14
|
||||
EX AF,AF'
|
||||
RS002 LD BC,10
|
||||
OUT (Y_PORT),A
|
||||
EX AF,AF'
|
||||
PUSH HL
|
||||
LD D,H
|
||||
LD E,L
|
||||
LDIR
|
||||
POP HL
|
||||
DEC XH
|
||||
JR Z,RS003
|
||||
EX AF,AF'
|
||||
INC A
|
||||
JP NZ,RS002
|
||||
RS003 POP BC
|
||||
LD A,B
|
||||
OUT (PAGE1),A
|
||||
LD A,C
|
||||
OUT (Y_PORT),A
|
||||
XOR A
|
||||
RET
|
||||
|
||||
;HL/DE - X/Y
|
||||
; B - WIDTH
|
||||
; C - HEIGHT
|
||||
|
||||
MOUSE LD (REST_X+1),HL
|
||||
LD (REST_Y+1),DE
|
||||
LD (REST_H+1),BC
|
||||
PUSH HL
|
||||
IN A,(PAGE1)
|
||||
LD H,A
|
||||
IN A,(Y_PORT)
|
||||
LD L,A
|
||||
EX (SP),HL
|
||||
LD A,#5C
|
||||
OUT (PAGE1),A
|
||||
LD A,E
|
||||
EX AF,AF'
|
||||
LD DE,#4040
|
||||
ADD HL,DE
|
||||
LD DE,MS_BMP
|
||||
EX DE,HL
|
||||
LD XH,14
|
||||
EX AF,AF'
|
||||
MS002 LD BC,10
|
||||
OUT (Y_PORT),A
|
||||
EX AF,AF'
|
||||
MS001 PUSH DE
|
||||
LDIR
|
||||
POP DE
|
||||
MS004 DEC XH
|
||||
JR Z,MS003
|
||||
EX AF,AF'
|
||||
INC A
|
||||
JP NZ,MS002
|
||||
MS003 POP BC
|
||||
LD A,B
|
||||
OUT (PAGE1),A
|
||||
LD A,C
|
||||
OUT (Y_PORT),A
|
||||
XOR A
|
||||
RET
|
||||
|
||||
READ_M IN A,(CMOUSE)
|
||||
RRCA
|
||||
RET NC
|
||||
IN A,(DMOUSE)
|
||||
LD L,A
|
||||
BIT 6,A
|
||||
CCF
|
||||
RET Z
|
||||
TST_01 IN A,(CMOUSE)
|
||||
RRCA
|
||||
JP NC,TST_01
|
||||
IN A,(DMOUSE)
|
||||
LD E,A
|
||||
BIT 6,A
|
||||
CCF
|
||||
RET NZ
|
||||
TST_02 IN A,(CMOUSE)
|
||||
RRCA
|
||||
JP NC,TST_02
|
||||
IN A,(DMOUSE)
|
||||
LD D,A
|
||||
BIT 6,A
|
||||
CCF
|
||||
RET NZ
|
||||
LD A,E
|
||||
AND #3F
|
||||
LD E,A
|
||||
LD A,L
|
||||
AND #03
|
||||
RRCA
|
||||
RRCA
|
||||
OR E
|
||||
LD E,A
|
||||
LD A,D
|
||||
AND #3F
|
||||
LD D,A
|
||||
LD A,L
|
||||
AND #0C
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
OR D
|
||||
LD D,A
|
||||
LD A,L
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
RES 6,A
|
||||
JR NC,STBU
|
||||
SET 6,A
|
||||
STBU RLCA
|
||||
RLCA
|
||||
AND #03
|
||||
LD (MB),A
|
||||
LD A,E
|
||||
LD (MX),A
|
||||
LD A,D
|
||||
LD (MY),A
|
||||
SCF
|
||||
RET
|
||||
|
||||
MCORECT LD HL,(PIX_X)
|
||||
LD DE,(MX)
|
||||
LD D,0
|
||||
BIT 7,E
|
||||
JP NZ,DECX
|
||||
ADD HL,DE
|
||||
LD (PIX_X),HL
|
||||
EX DE,HL
|
||||
LD HL,VSIZEX-1
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JP NC,YCOO
|
||||
LD HL,VSIZEX-1
|
||||
LD (PIX_X),HL
|
||||
JP YCOO
|
||||
DECX LD A,E
|
||||
NEG
|
||||
LD E,A
|
||||
AND A
|
||||
SBC HL,DE
|
||||
LD (PIX_X),HL
|
||||
JP NC,YCOO
|
||||
LD HL,0
|
||||
LD (PIX_X),HL
|
||||
YCOO LD HL,(PIX_Y)
|
||||
LD DE,(MY)
|
||||
LD D,0
|
||||
BIT 7,E
|
||||
JP NZ,DECY
|
||||
ADD HL,DE
|
||||
LD (PIX_Y),HL
|
||||
EX DE,HL
|
||||
LD HL,VSIZEY-1
|
||||
AND A
|
||||
SBC HL,DE
|
||||
RET NC
|
||||
LD HL,VSIZEY-1
|
||||
LD (PIX_Y),HL
|
||||
RET
|
||||
|
||||
DECY LD A,E
|
||||
NEG
|
||||
LD E,A
|
||||
AND A
|
||||
SBC HL,DE
|
||||
LD (PIX_Y),HL
|
||||
RET NC
|
||||
LD HL,0
|
||||
LD (PIX_Y),HL
|
||||
RET
|
||||
|
||||
INTON DI
|
||||
LD HL,INT_
|
||||
LD (INTA*256+#FF),HL
|
||||
LD A,INTA
|
||||
LD I,A
|
||||
IM 2
|
||||
EI
|
||||
RET
|
||||
|
||||
INTOFF DI
|
||||
LD A,#3F
|
||||
LD I,A
|
||||
IM 1
|
||||
EI
|
||||
RET
|
||||
|
||||
;Main Interrupt
|
||||
INT_ PUSH IY
|
||||
PUSH IX
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
PUSH AF
|
||||
EX AF,AF'
|
||||
EXX
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
PUSH AF
|
||||
IN A,(PAGE1)
|
||||
LD B,A
|
||||
IN A,(Y_PORT)
|
||||
LD C,A
|
||||
PUSH BC
|
||||
CALL REFRESH ;Refresh mouse
|
||||
CALL CONTROL
|
||||
LD A,5 ;SPECTRUM
|
||||
OUT (PAGE1),A ;
|
||||
LD A,#C0 ;INTERRUPT
|
||||
OUT (Y_PORT),A ;
|
||||
LD IY,#5C3A ;!!!!!!!!!
|
||||
CALL #0038 ;
|
||||
DI
|
||||
POP BC
|
||||
LD A,B
|
||||
OUT (PAGE1),A
|
||||
LD A,C
|
||||
OUT (Y_PORT),A
|
||||
POP AF
|
||||
POP BC
|
||||
POP DE
|
||||
POP HL
|
||||
EXX
|
||||
EX AF,AF'
|
||||
POP AF
|
||||
POP BC
|
||||
POP DE
|
||||
POP HL
|
||||
POP IX
|
||||
POP IY
|
||||
EI
|
||||
RETI
|
||||
|
||||
CONTROL CALL READ_M
|
||||
RET NC
|
||||
CALL MCORECT
|
||||
LD A,#00
|
||||
LD (REDY+1),A
|
||||
LD HL,MB_OLD
|
||||
LD A,(MB)
|
||||
CP (HL)
|
||||
RET Z
|
||||
LD (MB_OLD),A
|
||||
EX AF,AF'
|
||||
LD A,(CLICKS)
|
||||
CP 50
|
||||
RET Z
|
||||
LD E,A
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
ADD A,E
|
||||
LD E,A
|
||||
LD D,0
|
||||
LD HL,CLICK_B
|
||||
ADD HL,DE
|
||||
LD BC,(PIX_X)
|
||||
LD DE,(PIX_Y)
|
||||
EX AF,AF'
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD (HL),C
|
||||
INC HL
|
||||
LD (HL),B
|
||||
INC HL
|
||||
LD (HL),E
|
||||
INC HL
|
||||
LD (HL),D
|
||||
LD A,(CLICKS)
|
||||
INC A
|
||||
LD (CLICKS),A
|
||||
RET
|
||||
|
||||
GCLICK LD A,(CLICKS)
|
||||
OR A
|
||||
RET Z
|
||||
DEC A
|
||||
LD (CLICKS),A
|
||||
LD HL,CLICK_B
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
LD C,(HL)
|
||||
INC HL
|
||||
LD B,(HL)
|
||||
INC HL
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
LD D,(HL)
|
||||
EXX
|
||||
LD HL,CLICK_B-5
|
||||
LD DE,CLICK_B
|
||||
LD BC,245
|
||||
LDIR
|
||||
EXX
|
||||
SCF
|
||||
RET
|
||||
|
||||
REFRESH LD A,#01
|
||||
OR A
|
||||
RET NZ
|
||||
REDY LD A,#00
|
||||
; OR A
|
||||
; RET NZ
|
||||
CALL RESTORE
|
||||
LD HL,(PIX_X)
|
||||
LD DE,(PIX_Y)
|
||||
CALL MOUSE
|
||||
LD A,#FF
|
||||
LD (REDY+1),A
|
||||
RET
|
||||
|
||||
PIX_X DW 160
|
||||
PIX_Y DW 128
|
||||
|
||||
MX DB #00
|
||||
MY DB #00
|
||||
MB DB #00
|
||||
MB_OLD DB #00
|
||||
|
||||
CLICKS DB #00
|
||||
|
||||
CLICK_B DS 250
|
||||
|
||||
MS_BMP DS 140
|
||||
|
||||
CURSOR1 DB X,X,N,N,N,N,N,N,N,N
|
||||
DB X,W,X,N,N,N,N,N,N,N
|
||||
DB X,W,W,X,N,N,N,N,N,N
|
||||
DB X,W,W,W,X,N,N,N,N,N
|
||||
DB X,W,W,W,W,X,N,N,N,N
|
||||
DB X,W,W,W,W,W,X,N,N,N
|
||||
DB X,W,W,W,W,W,W,X,N,N
|
||||
DB X,W,W,W,W,X,X,X,X,N
|
||||
DB X,W,W,X,W,X,N,N,N,N
|
||||
DB X,W,X,X,W,W,X,N,N,N
|
||||
DB X,X,N,N,X,W,X,N,N,N
|
||||
DB X,N,N,N,X,W,W,X,N,N
|
||||
DB N,N,N,N,N,X,X,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
|
||||
CURSOR2 DB N,N,X,X,X,X,N,N,N,N
|
||||
DB N,X,W,W,W,W,X,N,N,N
|
||||
DB X,W,N,X,X,N,N,X,N,N
|
||||
DB X,W,X,N,N,N,N,X,N,N
|
||||
DB X,W,X,N,N,N,N,X,N,N
|
||||
DB X,W,N,N,N,N,N,X,N,N
|
||||
DB N,X,N,N,N,N,X,X,N,N
|
||||
DB N,N,X,X,X,X,X,W,X,N
|
||||
DB N,N,N,N,N,N,N,X,W,X
|
||||
DB N,N,N,N,N,N,N,N,X,X
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
|
||||
CURSOR3 DB X,N,N,N,N,N,N,N,N,N
|
||||
DB N,X,X,N,N,N,N,N,N,N
|
||||
DB N,X,W,X,X,N,N,N,N,N
|
||||
DB N,N,X,X,W,X,N,N,N,N
|
||||
DB N,N,X,W,X,W,X,N,N,N
|
||||
DB N,N,N,X,W,X,W,X,N,N
|
||||
DB N,N,N,N,X,W,X,W,X,N
|
||||
DB N,N,N,N,N,X,W,X,W,X
|
||||
DB N,N,N,N,N,N,X,W,X,N
|
||||
DB N,N,N,N,N,N,N,X,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
|
||||
CURSOR4 DB X,N,N,N,N,N,N,N,N,N
|
||||
DB N,X,X,N,N,N,N,N,N,N
|
||||
DB N,X,W,X,X,N,N,N,N,N
|
||||
DB N,N,X,X,W,X,N,N,N,N
|
||||
DB N,N,X,W,X,W,X,N,N,N
|
||||
DB N,N,N,X,W,X,W,X,N,N
|
||||
DB N,N,N,N,X,W,X,W,X,N
|
||||
DB N,N,N,N,N,X,W,X,W,X
|
||||
DB N,N,N,N,N,N,X,W,X,N
|
||||
DB N,N,N,N,N,N,N,X,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
|
||||
CURSOR5 DB X,X,N,N,N,N,N,N,N,N
|
||||
DB X,W,X,N,N,N,N,N,N,N
|
||||
DB X,W,W,X,N,N,N,N,N,N
|
||||
DB X,W,W,W,X,N,N,N,N,N
|
||||
DB X,W,W,W,W,X,N,N,N,N
|
||||
DB X,W,W,X,X,X,X,N,N,N
|
||||
DB X,W,X,W,X,N,N,N,N,N
|
||||
DB X,X,N,X,W,X,N,N,N,N
|
||||
DB X,N,N,N,X,X,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
|
||||
CURSOR6 DB X,X,N,N,N,N,N,N,N,N
|
||||
DB X,W,X,N,N,N,N,N,N,N
|
||||
DB X,W,W,X,N,N,N,N,N,N
|
||||
DB X,W,W,W,X,N,N,N,N,N
|
||||
DB X,W,W,W,W,X,N,N,N,N
|
||||
DB X,W,W,X,X,X,X,N,N,N
|
||||
DB X,W,X,W,X,N,N,N,N,N
|
||||
DB X,X,N,X,W,X,N,N,N,N
|
||||
DB X,N,N,N,X,X,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
|
||||
CURSOR7 DB X,X,N,N,N,N,N,N,N,N
|
||||
DB X,W,X,N,N,N,N,N,N,N
|
||||
DB X,W,W,X,N,N,N,N,N,N
|
||||
DB X,W,W,W,X,N,N,N,N,N
|
||||
DB X,W,W,W,W,X,N,N,N,N
|
||||
DB X,W,W,X,X,X,X,N,N,N
|
||||
DB X,W,X,W,X,N,N,N,N,N
|
||||
DB X,X,N,X,W,X,N,N,N,N
|
||||
DB X,N,N,N,X,X,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
|
||||
CURSOR8 DB X,X,N,N,N,N,N,N,N,N
|
||||
DB X,W,X,N,N,N,N,N,N,N
|
||||
DB X,W,W,X,N,N,N,N,N,N
|
||||
DB X,W,W,W,X,N,N,N,N,N
|
||||
DB X,W,W,W,W,X,N,N,N,N
|
||||
DB X,W,W,W,W,W,X,N,N,N
|
||||
DB X,W,W,W,W,W,W,X,N,N
|
||||
DB X,W,W,W,W,X,X,X,X,N
|
||||
DB X,W,W,X,W,X,N,N,N,N
|
||||
DB X,W,X,X,W,W,X,N,N,N
|
||||
DB X,X,N,N,X,W,X,N,N,N
|
||||
DB X,N,N,N,X,W,W,X,N,N
|
||||
DB N,N,N,N,N,X,X,N,N,N
|
||||
DB N,N,N,N,N,N,N,N,N,N
|
||||
|
||||
CURSOR9 DB X,X,X,X,X,X,X,X,X,N
|
||||
DB N,X,X,X,X,X,X,X,N,N
|
||||
DB N,X,W,W,W,W,W,X,N,N
|
||||
DB N,X,W,X,W,X,W,X,N,N
|
||||
DB N,X,W,W,X,W,W,X,N,N
|
||||
DB N,N,X,W,W,W,X,N,N,N
|
||||
DB N,N,N,X,W,X,N,N,N,N
|
||||
DB N,N,N,X,W,X,N,N,N,N
|
||||
DB N,N,X,W,W,W,X,N,N,N
|
||||
DB N,X,W,W,W,W,W,X,N,N
|
||||
DB N,X,W,W,X,W,W,X,N,N
|
||||
DB N,X,W,X,W,X,W,X,N,N
|
||||
DB N,X,X,X,X,X,X,X,N,N
|
||||
DB X,X,X,X,X,X,X,X,X,N
|
||||
|
||||
|
||||
745
INTERFACE/KEYINTER.ASM
Normal file
745
INTERFACE/KEYINTER.ASM
Normal file
@ -0,0 +1,745 @@
|
||||
|
||||
;[BEGIN]
|
||||
;//MODULE: KEYINTER
|
||||
;//CREATE: 19-05-1998 AUTHOR: Denis Parinov
|
||||
;//UPDATE: 24-10-1999 DNS Restore module
|
||||
|
||||
SBUF DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
EBUF
|
||||
|
||||
HEAD DB #00
|
||||
HOST DB #00
|
||||
|
||||
K_LOCK EQU $-KEYFLAG
|
||||
LANG_L EQU 7
|
||||
PAUSE_L EQU 6
|
||||
RES5_L EQU 5
|
||||
RES4_L EQU 4
|
||||
NUM_L EQU 3
|
||||
SCRL_L EQU 2
|
||||
INS_L EQU 1
|
||||
CAPS_L EQU 0
|
||||
KEYFLAG DB #02 ;D0-Key Pressed
|
||||
|
||||
K_SHIFT EQU $-KEYFLAG
|
||||
L_SHIFT EQU 7
|
||||
R_SHIFT EQU 6
|
||||
X_CTRL EQU 5
|
||||
X_ALT EQU 4
|
||||
L_CTRL EQU 3
|
||||
L_ALT EQU 2
|
||||
R_CTRL EQU 1
|
||||
R_ALT EQU 0
|
||||
KEYCTRL DB #00
|
||||
|
||||
KEYFLG EQU $-KEYFLAG
|
||||
FLAG_E0 EQU 7
|
||||
FLAG_F0 EQU 6
|
||||
FLAG_E1 EQU 5
|
||||
FLAG_04 EQU 4
|
||||
FLAG_03 EQU 3
|
||||
FLAG_02 EQU 2
|
||||
FLAG_01 EQU 1
|
||||
FLAG_00 EQU 0
|
||||
DB #00
|
||||
|
||||
SOUND_K EQU $-KEYFLAG
|
||||
FLAG_S7 EQU 7
|
||||
FLAG_S6 EQU 6
|
||||
FLAG_S5 EQU 5
|
||||
FLAG_S4 EQU 4
|
||||
FLAG_S3 EQU 3
|
||||
FLAG_S2 EQU 2
|
||||
SF_ALT EQU 1
|
||||
SF_BUFF EQU 0
|
||||
DB #03
|
||||
|
||||
; D15 - LShift
|
||||
; D14 - RShift
|
||||
; D13 - CTRL
|
||||
; D12 - ALT
|
||||
; D11 - LCTRL
|
||||
; D10 - LALT
|
||||
; D9 - RCTRL
|
||||
; D8 - RALT
|
||||
; D7 - Language Lock
|
||||
; D6 - Reserved
|
||||
; D5 - Reserved
|
||||
; D4 - Reserved
|
||||
; D3 - Num Lock
|
||||
; D2 - Scroll Lock
|
||||
; D1 - Insert Lock
|
||||
; D0 - Caps Lock
|
||||
|
||||
; D15 - Keystroke
|
||||
; D14
|
||||
; D13 \
|
||||
; D12 \
|
||||
; D11 -- Position code (0...5Ah)
|
||||
; D10 /
|
||||
; D9 /
|
||||
; D8
|
||||
; D7..D0 - ASCII code
|
||||
|
||||
|
||||
UNCODE DW 0
|
||||
|
||||
WAITKEY LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
JR Z,WAITKEY
|
||||
CALL GETSYM
|
||||
LD A,E
|
||||
AND A
|
||||
RET
|
||||
|
||||
SCANKEY LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
RET Z
|
||||
CALL GETSYM
|
||||
LD A,E
|
||||
RET
|
||||
|
||||
CTRLKEY LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
LD BC,(KEYFLAG)
|
||||
LD A,#00
|
||||
RET Z
|
||||
DEC A
|
||||
RET
|
||||
|
||||
TESTKEY LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
RET Z
|
||||
LD L,(HL)
|
||||
LD H,SBUF/256
|
||||
LD E,(HL)
|
||||
INC L
|
||||
LD D,(HL)
|
||||
INC L
|
||||
LD B,(HL)
|
||||
INC L
|
||||
LD C,(HL)
|
||||
LD A,E
|
||||
RET
|
||||
|
||||
K_CLEAR LD A,(HOST)
|
||||
LD (HEAD),A
|
||||
LD A,#2F
|
||||
CP B
|
||||
JR C,K_C2
|
||||
LD A,1
|
||||
SCF
|
||||
RET
|
||||
|
||||
K_C2 LD A,#35
|
||||
CP B
|
||||
JR NC,K_C3
|
||||
LD A,1
|
||||
SCF
|
||||
RET
|
||||
|
||||
K_C3 LD C,B
|
||||
RST #10
|
||||
RET
|
||||
|
||||
PUTSYM LD HL,HEAD
|
||||
LD A,(HOST)
|
||||
SUB 4
|
||||
AND #3F
|
||||
CP (HL)
|
||||
JR Z,FULL_BF
|
||||
LD A,(HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
RES 6,(HL)
|
||||
LD L,A
|
||||
LD H,SBUF/256
|
||||
LD (HL),E
|
||||
INC L
|
||||
LD (HL),D
|
||||
INC L
|
||||
LD (HL),B
|
||||
INC L
|
||||
LD (HL),C
|
||||
RET
|
||||
|
||||
GETSYM LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
RET Z
|
||||
LD A,(HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
RES 6,(HL)
|
||||
LD L,A
|
||||
LD H,SBUF/256
|
||||
LD E,(HL)
|
||||
INC L
|
||||
LD D,(HL)
|
||||
INC L
|
||||
LD B,(HL)
|
||||
INC L
|
||||
LD C,(HL)
|
||||
RET
|
||||
|
||||
FULL_BF EX AF,AF'
|
||||
BIT SF_BUFF,(IX+SOUND_K)
|
||||
JR Z,FBF
|
||||
EXX
|
||||
LD DE,230
|
||||
LD HL,50
|
||||
CALL BEEP
|
||||
EXX
|
||||
FBF EX AF,AF'
|
||||
RET
|
||||
|
||||
E0_KEY SET FLAG_E0,(IX+KEYFLG)
|
||||
JR RESCAN
|
||||
|
||||
F0_KEY SET FLAG_F0,(IX+KEYFLG)
|
||||
JR RESCAN
|
||||
|
||||
E1_KEY SET FLAG_E1,(IX+KEYFLG)
|
||||
JR RESCAN
|
||||
|
||||
KEYSCAN LD IX,KEYFLAG
|
||||
|
||||
RESCAN IN A,(COM_A)
|
||||
BIT 0,A
|
||||
RET Z
|
||||
IN A,(DAT_A)
|
||||
CP #F0
|
||||
JR Z,F0_KEY
|
||||
CP #E0
|
||||
JR Z,E0_KEY
|
||||
CP #E1
|
||||
JR Z,E1_KEY
|
||||
BIT FLAG_F0,(IX+KEYFLG)
|
||||
JR NZ,UN_KEY
|
||||
LD L,A
|
||||
CALL XLAT
|
||||
CALL SHIFTS
|
||||
RES FLAG_E0,(IX+KEYFLG)
|
||||
RES FLAG_E1,(IX+KEYFLG)
|
||||
RET Z ;IT'S SHIFT KEY
|
||||
|
||||
CALL INPCODE ;L - AT POS. CODE
|
||||
;
|
||||
PUTCODE LD HL,#1C00 ;Caps Lock
|
||||
AND A
|
||||
SBC HL,DE
|
||||
CALL Z,CAPS_X
|
||||
LD HL,#B800 ;Ctrl + Space
|
||||
AND A
|
||||
SBC HL,DE
|
||||
CALL Z,RUS_X
|
||||
LD HL,#5000 ;Insert
|
||||
AND A
|
||||
SBC HL,DE
|
||||
CALL Z,INS_X
|
||||
LD HL,#4900 ;Num Lock
|
||||
AND A
|
||||
SBC HL,DE
|
||||
CALL Z,NUM_X
|
||||
LD HL,#C900 ;Pause Lock
|
||||
AND A
|
||||
SBC HL,DE
|
||||
CALL Z,PAUSE_X
|
||||
LD HL,#4800 ;Scroll Lock
|
||||
AND A
|
||||
SBC HL,DE
|
||||
CALL Z,SCL_X
|
||||
LD HL,#CF00 ;Ctrl + Alt + Del
|
||||
AND A
|
||||
SBC HL,DE
|
||||
CALL Z,RST_X
|
||||
LD BC,(KEYFLAG)
|
||||
CALL PUTSYM
|
||||
RET
|
||||
|
||||
UN_KEY RES FLAG_F0,(IX+KEYFLG)
|
||||
LD L,A
|
||||
CALL XLAT
|
||||
CALL UNSHIFT
|
||||
RES FLAG_E0,(IX+KEYFLG)
|
||||
LD H,0
|
||||
LD (UNCODE),HL
|
||||
RET
|
||||
|
||||
CAPS_X LD A,(IX+K_LOCK)
|
||||
XOR #01
|
||||
LD (IX+K_LOCK),A
|
||||
RET
|
||||
|
||||
RUS_X BIT X_CTRL,(IX+K_SHIFT)
|
||||
RET Z
|
||||
LD A,(IX+K_LOCK)
|
||||
XOR #80
|
||||
LD (IX+K_LOCK),A
|
||||
BIT SF_ALT,(IX+SOUND_K)
|
||||
RET Z
|
||||
EXX
|
||||
LD DE,190
|
||||
LD HL,20
|
||||
CALL BEEP
|
||||
EXX
|
||||
RET
|
||||
|
||||
INS_X LD A,(IX+K_LOCK)
|
||||
XOR #02
|
||||
LD (IX+K_LOCK),A
|
||||
RET
|
||||
|
||||
NUM_X LD A,(IX+K_LOCK)
|
||||
XOR #08
|
||||
LD (IX+K_LOCK),A
|
||||
RET
|
||||
|
||||
PAUSE_X BIT X_CTRL,(IX+K_SHIFT)
|
||||
RET Z
|
||||
POP HL
|
||||
LD A,(IX+K_LOCK)
|
||||
XOR #40
|
||||
LD (IX+K_LOCK),A
|
||||
BIT PAUSE_L,(IX+K_LOCK)
|
||||
RET Z
|
||||
EI
|
||||
PAUSE_ HALT
|
||||
BIT PAUSE_L,(IX+K_LOCK)
|
||||
JR NZ,PAUSE_
|
||||
DI
|
||||
RET
|
||||
|
||||
SCL_X LD A,(IX+K_LOCK)
|
||||
XOR #04
|
||||
LD (IX+K_LOCK),A
|
||||
RET
|
||||
|
||||
RST_X BIT X_CTRL,(IX+K_SHIFT)
|
||||
RET Z
|
||||
BIT X_ALT,(IX+K_SHIFT)
|
||||
RET Z
|
||||
XOR A
|
||||
LD BC,#01FD
|
||||
RST #08
|
||||
RET
|
||||
|
||||
UNSHIFT LD A,L
|
||||
CP #37 ;L ALT
|
||||
JR NZ,USH1
|
||||
RES L_ALT,(IX+K_SHIFT)
|
||||
BIT R_ALT,(IX+K_SHIFT)
|
||||
RET NZ
|
||||
RES X_ALT,(IX+K_SHIFT)
|
||||
RET
|
||||
USH1 CP #39 ;R ALT
|
||||
JR NZ,USH2
|
||||
RES R_ALT,(IX+K_SHIFT)
|
||||
BIT L_ALT,(IX+K_SHIFT)
|
||||
RET NZ
|
||||
RES X_ALT,(IX+K_SHIFT)
|
||||
RET
|
||||
USH2 CP #36 ;L CTRL
|
||||
JR NZ,USH3
|
||||
RES L_CTRL,(IX+K_SHIFT)
|
||||
BIT R_CTRL,(IX+K_SHIFT)
|
||||
RET NZ
|
||||
RES X_CTRL,(IX+K_SHIFT)
|
||||
RET
|
||||
USH3 CP #3A ;R CTRL
|
||||
JR NZ,USH4
|
||||
RES R_CTRL,(IX+K_SHIFT)
|
||||
BIT L_CTRL,(IX+K_SHIFT)
|
||||
RET NZ
|
||||
RES X_CTRL,(IX+K_SHIFT)
|
||||
RET
|
||||
USH4 CP #29 ;L SHIFT
|
||||
JR NZ,USH5
|
||||
RES L_SHIFT,(IX+K_SHIFT)
|
||||
RET
|
||||
USH5 CP #34 ;R SHIFT
|
||||
JR NZ,USH6
|
||||
RES R_SHIFT,(IX+K_SHIFT)
|
||||
USH6 RET
|
||||
|
||||
SHIFTS LD A,L
|
||||
CP #37 ;L ALT
|
||||
JR NZ,NSH1
|
||||
SET L_ALT,(IX+K_SHIFT)
|
||||
SET X_ALT,(IX+K_SHIFT)
|
||||
RET
|
||||
NSH1 CP #39 ;R ALT
|
||||
JR NZ,NSH2
|
||||
SET R_ALT,(IX+K_SHIFT)
|
||||
SET X_ALT,(IX+K_SHIFT)
|
||||
RET
|
||||
NSH2 CP #36 ;L CTRL
|
||||
JR NZ,NSH3
|
||||
SET L_CTRL,(IX+K_SHIFT)
|
||||
SET X_CTRL,(IX+K_SHIFT)
|
||||
RET
|
||||
NSH3 CP #3A ;R CTRL
|
||||
JR NZ,NSH4
|
||||
SET R_CTRL,(IX+K_SHIFT)
|
||||
SET X_CTRL,(IX+K_SHIFT)
|
||||
RET
|
||||
NSH4 CP #29 ;L SHIFT
|
||||
JR NZ,NSH5
|
||||
SET L_SHIFT,(IX+K_SHIFT)
|
||||
RET
|
||||
NSH5 CP #34 ;R SHIFT
|
||||
JR NZ,NSH6
|
||||
SET R_SHIFT,(IX+K_SHIFT)
|
||||
NSH6 RET
|
||||
|
||||
; ORG $/256+1*256
|
||||
|
||||
ALIGN 256
|
||||
; DEFS $/256+1*256-$,0
|
||||
|
||||
; 0 1 2 3 4 5 6 7 8 9 A B C D E
|
||||
; F
|
||||
XLAT_T
|
||||
DB #00,#43,#00,#3F,#3D,#3B,#3C,#46,#00,#44,#42,#40,#3E,#0F,#00,#00 ;00
|
||||
DB #00,#37,#29,#00,#36,#10,#02,#00,#00,#00,#2A,#1E,#1D,#11,#03,#00 ;10
|
||||
DB #00,#2C,#2B,#1F,#12,#05,#04,#00,#00,#38,#2D,#20,#14,#13,#06,#00 ;20
|
||||
DB #00,#2F,#2E,#22,#21,#15,#07,#00,#00,#00,#30,#23,#16,#08,#09,#00 ;30
|
||||
DB #00,#31,#24,#17,#18,#0B,#0A,#00,#00,#32,#33,#25,#26,#19,#0C,#00 ;40
|
||||
DB #00,#00,#27,#00,#1A,#0D,#00,#00,#1C,#34,#28,#1B,#00,#35,#00,#00 ;50
|
||||
DB #00,#00,#00,#00,#00,#00,#0E,#00,#00,#51,#00,#54,#57,#00,#00,#00 ;60
|
||||
DB #50,#4F,#52,#55,#56,#58,#01,#49,#45,#4D,#53,#4C,#4B,#59,#48,#00 ;70
|
||||
DB #00,#00,#00,#41,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 ;80
|
||||
|
||||
XLAT BIT FLAG_E0,(IX+KEYFLG)
|
||||
JR Z,W_O_E0
|
||||
CP #11 ;Right ALT
|
||||
LD L,#39
|
||||
RET Z
|
||||
CP #14 ;Right CTRL
|
||||
LD L,#3A
|
||||
RET Z
|
||||
CP #5A ;enter
|
||||
LD L,#4E
|
||||
RET Z
|
||||
CP #4A ; /
|
||||
LD L,#4A
|
||||
RET Z
|
||||
CP #7C ; * - Print Screen
|
||||
LD L,#47
|
||||
RET Z
|
||||
LD L,A
|
||||
W_O_E0 LD H,XLAT_T/256
|
||||
LD L,(HL)
|
||||
RET
|
||||
|
||||
|
||||
;INPCODE BIT 1,(IX+1) ;00110000
|
||||
; JR NZ,FN_KEY ;LRCAcaRP
|
||||
|
||||
INPCODE LD D,L
|
||||
LD E,0
|
||||
BIT LANG_L,(IX+K_LOCK)
|
||||
JP NZ,RUSCODE
|
||||
LD A,(IX+K_SHIFT)
|
||||
AND #C0
|
||||
JR NZ,SHIFT_L
|
||||
SET 7,D
|
||||
BIT X_ALT,(IX+K_SHIFT)
|
||||
RET NZ
|
||||
BIT X_CTRL,(IX+K_SHIFT)
|
||||
RET NZ
|
||||
LD D,L
|
||||
BIT CAPS_L,(IX+K_LOCK)
|
||||
LD BC,CAPSTAB
|
||||
JR NZ,CONVER
|
||||
LD BC,NORMTAB
|
||||
CONVER LD H,0
|
||||
ADD HL,BC
|
||||
LD E,(HL)
|
||||
RET
|
||||
|
||||
SHIFT_L LD BC,SHIFTAB
|
||||
BIT CAPS_L,(IX+K_LOCK)
|
||||
JR Z,CONVER5
|
||||
LD BC,SHF2TAB
|
||||
CONVER5 LD H,0
|
||||
ADD HL,BC
|
||||
LD E,(HL)
|
||||
SET 7,D
|
||||
RET
|
||||
|
||||
RUSCODE LD A,(IX+K_SHIFT)
|
||||
AND #C0
|
||||
JR NZ,SHIFT_R
|
||||
SET 7,D
|
||||
BIT X_ALT,(IX+K_SHIFT)
|
||||
RET NZ
|
||||
BIT X_CTRL,(IX+K_SHIFT)
|
||||
RET NZ
|
||||
LD D,L
|
||||
BIT CAPS_L,(IX+K_LOCK)
|
||||
LD BC,CAPSRUS
|
||||
JR NZ,CONVER2
|
||||
LD BC,NORMRUS
|
||||
CONVER2 LD H,0
|
||||
ADD HL,BC
|
||||
LD E,(HL)
|
||||
RET
|
||||
|
||||
SHIFT_R LD BC,SHIFRUS
|
||||
BIT CAPS_L,(IX+K_LOCK)
|
||||
JR Z,CONVER4
|
||||
LD BC,SHF2RUS
|
||||
CONVER4 LD H,0
|
||||
ADD HL,BC
|
||||
LD E,(HL)
|
||||
SET 7,D
|
||||
RET
|
||||
|
||||
K_SETUP INC B
|
||||
DEC B
|
||||
JP Z,KEYMAP
|
||||
DEC B
|
||||
JP Z,K_SND_R
|
||||
DEC B
|
||||
JP Z,K_SND_W
|
||||
LD A,#0E
|
||||
SCF
|
||||
RET
|
||||
|
||||
K_SND_R LD A,(SOUND_K)
|
||||
AND A
|
||||
RET
|
||||
|
||||
K_SND_W LD (SOUND_K),A
|
||||
AND A
|
||||
RET
|
||||
|
||||
KEYMAP LD BC,ENDNORM-NORMTAB
|
||||
BIT 7,A
|
||||
JR NZ,READMAP
|
||||
LD DE,NORMTAB
|
||||
OR A
|
||||
JR Z,LTAB
|
||||
LD DE,SHIFTAB
|
||||
DEC A
|
||||
JR Z,LTAB
|
||||
LD DE,CAPSTAB
|
||||
DEC A
|
||||
JR Z,LTAB
|
||||
LD DE,SHF2TAB
|
||||
DEC A
|
||||
JR Z,LTAB
|
||||
LD DE,NORMRUS
|
||||
DEC A
|
||||
JR Z,LTAB
|
||||
LD DE,SHIFRUS
|
||||
DEC A
|
||||
JR Z,LTAB
|
||||
LD DE,CAPSRUS
|
||||
DEC A
|
||||
JR Z,LTAB
|
||||
LD DE,SHF2RUS
|
||||
DEC A
|
||||
JR Z,LTAB
|
||||
XOR A
|
||||
SCF
|
||||
RET
|
||||
LTAB LDIR
|
||||
XOR A
|
||||
RET
|
||||
|
||||
READMAP RES 7,A
|
||||
LD DE,NORMTAB
|
||||
OR A
|
||||
JR Z,RTAB
|
||||
LD DE,SHIFTAB
|
||||
DEC A
|
||||
JR Z,RTAB
|
||||
LD DE,CAPSTAB
|
||||
DEC A
|
||||
JR Z,RTAB
|
||||
LD DE,SHF2TAB
|
||||
DEC A
|
||||
JR Z,RTAB
|
||||
LD DE,NORMRUS
|
||||
DEC A
|
||||
JR Z,RTAB
|
||||
LD DE,SHIFRUS
|
||||
DEC A
|
||||
JR Z,RTAB
|
||||
LD DE,CAPSRUS
|
||||
DEC A
|
||||
JR Z,RTAB
|
||||
LD DE,SHF2RUS
|
||||
DEC A
|
||||
JR Z,RTAB
|
||||
XOR A
|
||||
SCF
|
||||
RET
|
||||
RTAB EX DE,HL
|
||||
LDIR
|
||||
XOR A
|
||||
RET
|
||||
|
||||
; `
|
||||
; 0
|
||||
; Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Back
|
||||
; 1 2 3 4 5 6 7 8 9 A B C D E
|
||||
; Tab,"Q","W","E","R","T","Y","U","I","O","P","[","]"
|
||||
; F 10 11 12 13 14 15 16 17 18 19 1A 1B
|
||||
; Cps,"A","S","D","F","G","H","J","K","L",";","'",Enter
|
||||
; 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28
|
||||
; LSh,"Z","X","C","V","B","N","M",",",".","/",RSh,#5C
|
||||
; 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35
|
||||
; LCl,LAt,SPC,Rat,RCl,F01,F02,F03,F04,F05,F06,F07,F08
|
||||
; 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42
|
||||
; F09,F10,F11,F12,prn,scr,num,"/","*","-","+",ent,Del
|
||||
; 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
|
||||
; Ins,End,Dwn,PgD,Lft,"5",Rgh,Hom,Upp,PgU
|
||||
; 50 51 52 53 54 55 56 57 58 59
|
||||
;
|
||||
;================================
|
||||
Esc EQU #1B
|
||||
Bcs EQU #08
|
||||
Tab EQU #09
|
||||
Cps EQU #00
|
||||
Spc EQU #20
|
||||
Ent EQU #0D
|
||||
|
||||
;Standart ASCII tables
|
||||
NORMTAB DB "`",Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs
|
||||
DB Tab,"q","w","e","r","t","y","u","i","o","p","[","]"
|
||||
DB Cps,"a","s","d","f","g","h","j","k","l",";","'",Ent
|
||||
DB #00,"z","x","c","v","b","n","m",#2C,".","/",#00,#5C
|
||||
DB #00,#00,Spc,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,"/","*","-","+",Ent,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
ENDNORM
|
||||
|
||||
SHIFTAB DB "~",Esc,"!","@","#","$","%","^","&","*","(",")","_","+",Bcs
|
||||
DB Tab,"Q","W","E","R","T","Y","U","I","O","P","{","}"
|
||||
DB Cps,"A","S","D","F","G","H","J","K","L",":",#22,Ent
|
||||
DB #00,"Z","X","C","V","B","N","M","<",">","?",#00,"|"
|
||||
DB #00,#00,Spc,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,"/","*","-","+",Ent,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
|
||||
CAPSTAB DB "`",Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs
|
||||
DB Tab,"Q","W","E","R","T","Y","U","I","O","P","[","]"
|
||||
DB Cps,"A","S","D","F","G","H","J","K","L",";","'",Ent
|
||||
DB #00,"Z","X","C","V","B","N","M",#2C,".","/",#00,#5C
|
||||
DB #00,#00,Spc,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,"/","*","-","+",Ent,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
|
||||
SHF2TAB DB "~",Esc,"!","@","#","$","%","^","&","*","(",")","_","+",Bcs
|
||||
DB Tab,"q","w","e","r","t","y","u","i","o","p","{","}"
|
||||
DB Cps,"a","s","d","f","g","h","j","k","l",":",#22,Ent
|
||||
DB #00,"z","x","c","v","b","n","m","<",">","?",#00,"|"
|
||||
DB #00,#00,Spc,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,"/","*","-","+",Ent,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
|
||||
;Standart Russian tables
|
||||
NORMRUS DB #F1,Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs
|
||||
DB Tab,#A9,#E6,#E3,#AA,#A5,#AD,#A3,#E8,#E9,#A7,#E5,#EA
|
||||
DB Cps,#E4,#EB,#A2,#A0,#AF,#E0,#AE,#AB,#A4,#A6,#ED,Ent
|
||||
DB #00,#EF,#E7,#E1,#AC,#A8,#E2,#EC,#A1,#EE,".",#00,#5C
|
||||
DB #00,#00,Spc,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,"/","*","-","+",Ent,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
|
||||
SHIFRUS DB #F0,Esc,"!",#22,"#","$",":",#2C,".",";","?","%","_","+",Bcs
|
||||
DB Tab,#89,#96,#93,#8A,#85,#8D,#83,#98,#99,#87,#95,#9A
|
||||
DB Cps,#94,#9B,#82,#80,#8F,#90,#8E,#8B,#84,#86,#9D,Ent
|
||||
DB #00,#9F,#97,#91,#8C,#88,#92,#9C,#81,#9E,#2C,#00,"|"
|
||||
DB #00,#00,Spc,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,"/","*","-","+",Ent,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
|
||||
CAPSRUS DB #F0,Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs
|
||||
DB Tab,#89,#96,#93,#8A,#85,#8D,#83,#98,#99,#87,#95,#9A
|
||||
DB Cps,#94,#9B,#82,#80,#8F,#90,#8E,#8B,#84,#86,#9D,Ent
|
||||
DB #00,#9F,#97,#91,#8C,#88,#92,#9C,#81,#9E,".",#00,#5C
|
||||
DB #00,#00,Spc,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,"/","*","-","+",Ent,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
|
||||
SHF2RUS DB #F1,Esc,"!",#22,"#","$",":",#2C,".",";","?","%","_","+",Bcs
|
||||
DB Tab,#A9,#E6,#E3,#AA,#A5,#AD,#A3,#E8,#E9,#A7,#E5,#EA
|
||||
DB Cps,#E4,#EB,#A2,#A0,#AF,#E0,#AE,#AB,#A4,#A6,#ED,Ent
|
||||
DB #00,#EF,#E7,#E1,#AC,#A8,#E2,#EC,#A1,#EE,#2C,#00,"|"
|
||||
DB #00,#00,Spc,#00,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
DB #00,#00,#00,"/","*","-","+",Ent,#00
|
||||
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
|
||||
;================================
|
||||
|
||||
BEEP LD A,#10
|
||||
OUT (#FE),A
|
||||
LD B,D
|
||||
LD C,E
|
||||
BPP DEC BC
|
||||
LD A,B
|
||||
OR C
|
||||
JR NZ,BPP
|
||||
LD A,#00
|
||||
OUT (#FE),A
|
||||
LD B,D
|
||||
LD C,E
|
||||
BPP2 DEC BC
|
||||
LD A,B
|
||||
OR C
|
||||
JR NZ,BPP2
|
||||
DEC HL
|
||||
LD A,H
|
||||
OR L
|
||||
JR NZ,BEEP
|
||||
RET
|
||||
|
||||
COM_A EQU #19
|
||||
DAT_A EQU #18
|
||||
|
||||
KINIT LD A,0
|
||||
OUT (COM_A),A
|
||||
LD A,1
|
||||
OUT (COM_A),A
|
||||
LD A,#00 ;#18
|
||||
OUT (COM_A),A
|
||||
LD A,3
|
||||
OUT (COM_A),A
|
||||
LD A,#C1
|
||||
OUT (COM_A),A
|
||||
LD A,4
|
||||
OUT (COM_A),A
|
||||
LD A,#07 ;#05
|
||||
OUT (COM_A),A
|
||||
LD A,5
|
||||
OUT (COM_A),A
|
||||
LD A,#60
|
||||
OUT (COM_A),A
|
||||
RET
|
||||
|
||||
;//MODULE: KEYINTER
|
||||
;[END]
|
||||
|
||||
609
INTERFACE/LOBJECT.ASM
Normal file
609
INTERFACE/LOBJECT.ASM
Normal file
@ -0,0 +1,609 @@
|
||||
|
||||
P_M_OBJ DW #FFFF
|
||||
P_L_OBJ DW #FFFF
|
||||
WAITMOD DB #00
|
||||
P_MOUSE DB #00
|
||||
|
||||
; HL - OBJECT
|
||||
; A - MESSAGE
|
||||
; 1 - ACTIVE
|
||||
; 2 - DEACTIVE
|
||||
; 3 - PRESS LEFT
|
||||
; 4 - UNPRESS LEFT
|
||||
; 5 - DRAG
|
||||
; 6 - DROP
|
||||
; 7 - PRESS RIGHT
|
||||
; 8 - UNPRESS RIGHT
|
||||
|
||||
|
||||
WAITMSG LD C,5
|
||||
CALL INTMOUS
|
||||
JP C,CLIKMSG
|
||||
CALL OBJECT
|
||||
EX DE,HL
|
||||
LD HL,(P_M_OBJ)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
EX DE,HL
|
||||
CALL NZ,NEWMOBJ
|
||||
CALL LOBJECT
|
||||
EX DE,HL
|
||||
LD HL,(P_L_OBJ)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JP Z,WAITMSG
|
||||
PUSH DE
|
||||
LD C,3
|
||||
CALL INTMOUS
|
||||
POP DE
|
||||
OR A
|
||||
JP Z,NONPRES
|
||||
CP 1
|
||||
JP Z,LFTPRES
|
||||
CP 2
|
||||
JP Z,NONPRES
|
||||
CP 3
|
||||
JP Z,LFTPRES
|
||||
LFTPRES LD HL,(P_L_OBJ)
|
||||
LD A,(WAITMOD)
|
||||
XOR #FF
|
||||
LD (WAITMOD),A
|
||||
LD A,5
|
||||
RET Z
|
||||
EX DE,HL
|
||||
LD (P_L_OBJ),HL
|
||||
LD A,6
|
||||
AND A
|
||||
RET
|
||||
|
||||
NONPRES LD HL,(P_L_OBJ)
|
||||
LD A,(WAITMOD)
|
||||
XOR #FF
|
||||
LD (WAITMOD),A
|
||||
LD A,2
|
||||
RET Z
|
||||
EX DE,HL
|
||||
LD (P_L_OBJ),HL
|
||||
LD A,1
|
||||
AND A
|
||||
RET
|
||||
|
||||
|
||||
CLIKMSG PUSH AF
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
CALL GOBJ
|
||||
EX DE,HL
|
||||
LD HL,(P_M_OBJ)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
EX DE,HL
|
||||
JP Z,CLIKMS2
|
||||
CALL NEWMOBJ
|
||||
POP DE
|
||||
POP HL
|
||||
POP AF
|
||||
SCF
|
||||
RET
|
||||
|
||||
CLIKMS2 POP DE
|
||||
POP HL
|
||||
CALL LOBJ
|
||||
LD A,(P_MOUSE)
|
||||
LD C,A
|
||||
POP AF
|
||||
LD (P_MOUSE),A
|
||||
OR A
|
||||
JP Z,RESPRES
|
||||
CP 1
|
||||
JP Z,FRIPRES
|
||||
CP 2
|
||||
JP Z,SECPRES
|
||||
CP 3
|
||||
JP Z,DUUPRES
|
||||
|
||||
DUUPRES LD A,C
|
||||
AND 1
|
||||
LD A,3
|
||||
RET Z
|
||||
LD A,7
|
||||
RET
|
||||
|
||||
RESPRES LD A,C
|
||||
AND 1
|
||||
LD A,4
|
||||
RET NZ
|
||||
LD A,8
|
||||
RET
|
||||
|
||||
FRIPRES LD A,C
|
||||
AND 1
|
||||
LD A,3
|
||||
RET Z
|
||||
LD A,8
|
||||
RET
|
||||
|
||||
SECPRES LD A,C
|
||||
AND 2
|
||||
LD A,7
|
||||
RET Z
|
||||
LD A,4
|
||||
RET
|
||||
|
||||
RE_MOBJ CALL NEWMOBJ
|
||||
SCF
|
||||
RET
|
||||
|
||||
NEWMOBJ LD (P_M_OBJ),HL
|
||||
LD DE,LOBJADR
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,DE
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
LD D,(HL)
|
||||
INC HL
|
||||
LD C,(HL)
|
||||
INC HL
|
||||
LD B,(HL)
|
||||
EX DE,HL
|
||||
; LD (LOBJ_T),HL
|
||||
; LD (LOBJ_SZ),BC
|
||||
RET
|
||||
|
||||
|
||||
;LOCAL OBJECT DETECTER
|
||||
; INPUT: NONE
|
||||
;OUTPUT:
|
||||
; NC; HL - OBJECT ID
|
||||
; C; ERROR
|
||||
|
||||
LOBJ PUSH IX
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
JP LOBJC
|
||||
|
||||
LOBJECT PUSH IX
|
||||
LD C,3
|
||||
CALL INTMOUS
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
LOBJC LD IX,(LOBJ_T) ;CURRENT LOCAL OBJECT TABLE
|
||||
POP HL ;Y MOUSE COORD
|
||||
LD DE,(WIN_Y)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
EX DE,HL
|
||||
POP HL ;X MOUSE COORD
|
||||
LD BC,(WIN_X)
|
||||
AND A
|
||||
SBC HL,BC
|
||||
LD B,H
|
||||
LD C,L
|
||||
LOBJ_AG LD L,(IX+2)
|
||||
LD H,(IX+3) ;OBJECT X-MIN
|
||||
AND A
|
||||
SBC HL,BC
|
||||
JP Z,OBJXYEP
|
||||
JP NC,LOBJ_NN
|
||||
LD L,(IX+4)
|
||||
LD H,(IX+5) ;OBJECT X-MAX
|
||||
AND A
|
||||
SBC HL,BC
|
||||
JP C,LOBJ_NN
|
||||
LOBJXEP LD L,(IX+6)
|
||||
LD H,(IX+7) ;OBJECT Y-MIN
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JP Z,LOBJ_EP
|
||||
JP NC,LOBJ_NN
|
||||
LD L,(IX+8)
|
||||
LD H,(IX+9) ;OBJECT Y-MAX
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JP C,LOBJ_NN
|
||||
LOBJ_EP LD L,(IX+0) ;OBJECT ID
|
||||
LD H,(IX+1)
|
||||
POP IX
|
||||
AND A
|
||||
RET
|
||||
|
||||
LOBJ_NN EX DE,HL ;NEXT OBJECT
|
||||
LD DE,10
|
||||
ADD IX,DE
|
||||
EX DE,HL
|
||||
LD A,(IX+1) ;END MARKER?
|
||||
INC A
|
||||
JP NZ,LOBJ_AG
|
||||
LD A,(IX+0) ;END MARKER?
|
||||
INC A
|
||||
JP NZ,LOBJ_AG
|
||||
POP IX
|
||||
SCF
|
||||
RET
|
||||
|
||||
;LOCAL OBJECT CONSTRUCTOR
|
||||
; INPUT:
|
||||
; DE/BC - X-MIN/X-MAX
|
||||
; DE'/BC' - Y-MIN/Y-MAX
|
||||
; HL - OBJECT ID
|
||||
|
||||
LCONST EXX
|
||||
PUSH IX
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
LD HL,(LOBJ_T)
|
||||
LD BC,(LOBJ_SZ)
|
||||
ADD HL,BC
|
||||
DEC HL
|
||||
LD D,H
|
||||
LD E,L
|
||||
LD BC,10
|
||||
ADD HL,BC
|
||||
EX DE,HL
|
||||
LD BC,(LOBJ_SZ)
|
||||
LDDR
|
||||
POP BC
|
||||
POP DE
|
||||
EXX
|
||||
LD IX,(LOBJ_T)
|
||||
LD (IX+0),L
|
||||
LD (IX+1),H
|
||||
LD (IX+2),E
|
||||
LD (IX+3),D
|
||||
LD (IX+4),C
|
||||
LD (IX+5),B
|
||||
EXX
|
||||
LD (IX+6),E
|
||||
LD (IX+7),D
|
||||
LD (IX+8),C
|
||||
LD (IX+9),B
|
||||
EXX
|
||||
LD HL,(LOBJ_SZ)
|
||||
LD BC,10
|
||||
ADD HL,BC
|
||||
LD (LOBJ_SZ),HL
|
||||
POP IX
|
||||
AND A
|
||||
RET
|
||||
|
||||
;LOCAL OBJECT DESTRUCTOR
|
||||
; INPUT:
|
||||
; HL - OBJECT ID
|
||||
;OUTPUT:
|
||||
; NC - OBJECT DESTROYED
|
||||
; C - OBJECT ABSENT
|
||||
|
||||
LDESTR EX DE,HL
|
||||
PUSH IX
|
||||
LD IX,(LOBJ_T)
|
||||
LD A,(IX+1) ;END MARKER?
|
||||
INC A
|
||||
JP NZ,LDESTR0
|
||||
LD A,(IX+0) ;END MARKER?
|
||||
INC A
|
||||
JP NZ,LDESTR0
|
||||
POP IX
|
||||
SCF
|
||||
RET
|
||||
|
||||
LDESTR0 LD L,(IX+0)
|
||||
LD H,(IX+1)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JP NZ,LDESTR1
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
LD H,D
|
||||
LD L,E
|
||||
LD BC,10
|
||||
ADD HL,BC
|
||||
EXX
|
||||
LD HL,(LOBJ_T)
|
||||
LD DE,(LOBJ_SZ)
|
||||
ADD HL,DE
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
AND A
|
||||
SBC HL,DE
|
||||
PUSH HL
|
||||
EXX
|
||||
POP BC
|
||||
LDIR
|
||||
LD HL,(LOBJ_SZ)
|
||||
LD BC,10
|
||||
AND A
|
||||
SBC HL,BC
|
||||
LD (LOBJ_SZ),HL
|
||||
POP IX
|
||||
AND A
|
||||
RET
|
||||
|
||||
LDESTR1 LD BC,10
|
||||
ADD IX,BC
|
||||
LD A,(IX+1) ;END MARKER?
|
||||
INC A
|
||||
JP NZ,LDESTR0
|
||||
LD A,(IX+0) ;END MARKER?
|
||||
INC A
|
||||
JP NZ,LDESTR0
|
||||
POP IX
|
||||
SCF
|
||||
RET
|
||||
|
||||
;GLOBAL OBJECT DETECTER
|
||||
; INPUT: NONE
|
||||
;OUTPUT:
|
||||
; NC; HL - OBJECT ID
|
||||
; C; ERROR
|
||||
|
||||
GOBJ PUSH IX
|
||||
PUSH HL
|
||||
JP GOBJC
|
||||
|
||||
OBJECT PUSH IX
|
||||
LD C,3
|
||||
CALL INTMOUS
|
||||
PUSH HL
|
||||
GOBJC POP BC
|
||||
LD IX,OBJ_TAB ;OBJECT TABLE
|
||||
OBJ_CNT LD L,(IX+2)
|
||||
LD H,(IX+3) ;OBJECT X-MIN
|
||||
AND A
|
||||
SBC HL,BC
|
||||
JP Z,OBJXYEP
|
||||
JP NC,OBJ_NON
|
||||
LD L,(IX+4)
|
||||
LD H,(IX+5) ;OBJECT X-MAX
|
||||
AND A
|
||||
SBC HL,BC
|
||||
JP C,OBJ_NON
|
||||
OBJXYEP LD L,(IX+6)
|
||||
LD H,(IX+7) ;OBJECT Y-MIN
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JP Z,OBJ_YEP
|
||||
JP NC,OBJ_NON
|
||||
LD L,(IX+8)
|
||||
LD H,(IX+9) ;OBJECT Y-MAX
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JP C,OBJ_NON
|
||||
OBJ_YEP LD L,(IX+0) ;OBJECT ID
|
||||
LD H,(IX+1)
|
||||
POP IX
|
||||
AND A
|
||||
RET
|
||||
|
||||
OBJ_NON EX DE,HL ;NEXT OBJECT
|
||||
LD DE,10
|
||||
ADD IX,DE
|
||||
EX DE,HL
|
||||
LD A,(IX+1) ;END MARKER?
|
||||
INC A
|
||||
JP NZ,OBJ_CNT
|
||||
LD A,(IX+0) ;END MARKER?
|
||||
INC A
|
||||
JP NZ,OBJ_CNT
|
||||
POP IX
|
||||
SCF
|
||||
RET
|
||||
|
||||
_HLX DW #0000
|
||||
_DEX DW #0000
|
||||
_BCX DW #0000
|
||||
_HL DW #0000
|
||||
_DE DW #0000
|
||||
_BC DW #0000
|
||||
STACKR1
|
||||
|
||||
SAVERG LD A,R
|
||||
DI
|
||||
LD (SAVESP+1),SP
|
||||
LD SP,STACKR1
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
EXX
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
EXX
|
||||
SAVESP LD SP,#0000
|
||||
RET PO
|
||||
EI
|
||||
RET
|
||||
|
||||
RESTRG LD A,R
|
||||
DI
|
||||
LD (RESTSP+1),SP
|
||||
LD SP,_HLX
|
||||
EXX
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
EXX
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
RESTSP LD SP,#0000
|
||||
RET PO
|
||||
EI
|
||||
RET
|
||||
|
||||
;INPUT:
|
||||
; HL/DE - X/Y
|
||||
; BC - WIDTH
|
||||
; BC' - HEIGH
|
||||
;OUTPUT:
|
||||
; DE/BC - X-MIN/X-MAX
|
||||
;DE'/BC' - Y-MIN/Y-MAX
|
||||
|
||||
OPTIMIZ PUSH DE
|
||||
LD D,H
|
||||
LD E,L
|
||||
ADD HL,BC
|
||||
LD B,H
|
||||
LD C,L
|
||||
EXX
|
||||
POP HL
|
||||
LD D,H
|
||||
LD E,L
|
||||
ADD HL,BC
|
||||
LD B,H
|
||||
LD C,L
|
||||
EXX
|
||||
RET
|
||||
|
||||
;GLOBAL OBJECT CONSTRUCTOR
|
||||
; INPUT:
|
||||
; DE/BC - X-MIN/X-MAX
|
||||
;DE'/BC' - Y-MIN/Y-MAX
|
||||
; HL - OBJECT ID
|
||||
|
||||
CONST EXX
|
||||
PUSH IX
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
LD HL,OBJ_TAB
|
||||
LD BC,(SZ_OBJ)
|
||||
ADD HL,BC
|
||||
DEC HL
|
||||
LD D,H
|
||||
LD E,L
|
||||
LD BC,10
|
||||
ADD HL,BC
|
||||
EX DE,HL
|
||||
LD BC,(SZ_OBJ)
|
||||
LDDR
|
||||
POP BC
|
||||
POP DE
|
||||
EXX
|
||||
LD IX,OBJ_TAB
|
||||
LD (IX+0),L
|
||||
LD (IX+1),H
|
||||
LD (IX+2),E
|
||||
LD (IX+3),D
|
||||
LD (IX+4),C
|
||||
LD (IX+5),B
|
||||
EXX
|
||||
LD (IX+6),E
|
||||
LD (IX+7),D
|
||||
LD (IX+8),C
|
||||
LD (IX+9),B
|
||||
LD HL,(SZ_OBJ)
|
||||
LD BC,10
|
||||
ADD HL,BC
|
||||
LD (SZ_OBJ),HL
|
||||
EXX
|
||||
LD DE,LOBJADR
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,DE
|
||||
LD DE,LOBJTAB
|
||||
LD BC,10
|
||||
; LD (HL),E
|
||||
INC HL
|
||||
; LD (HL),D
|
||||
INC HL
|
||||
; LD (HL),C
|
||||
INC HL
|
||||
; LD (HL),B
|
||||
POP IX
|
||||
AND A
|
||||
RET
|
||||
|
||||
;GLOBAL OBJECT DESTRUCTOR
|
||||
; INPUT:
|
||||
; HL - OBJECT ID
|
||||
;OUTPUT:
|
||||
; NC - OBJECT DESTROYED
|
||||
; C - OBJECT ABSENT
|
||||
|
||||
DESTR EX DE,HL
|
||||
PUSH IX
|
||||
LD IX,OBJ_TAB
|
||||
LD A,(IX+1) ;END MARKER?
|
||||
INC A
|
||||
JP NZ,DESTR0
|
||||
LD A,(IX+0) ;END MARKER?
|
||||
INC A
|
||||
JP NZ,DESTR0
|
||||
POP IX
|
||||
SCF
|
||||
RET
|
||||
|
||||
DESTR0 LD L,(IX+0)
|
||||
LD H,(IX+1)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JP NZ,DESTR1
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
LD H,D
|
||||
LD L,E
|
||||
LD BC,10
|
||||
ADD HL,BC
|
||||
EXX
|
||||
LD HL,OBJ_TAB
|
||||
LD DE,(SZ_OBJ)
|
||||
ADD HL,DE
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
AND A
|
||||
SBC HL,DE
|
||||
PUSH HL
|
||||
EXX
|
||||
POP BC
|
||||
LDIR
|
||||
LD HL,(SZ_OBJ)
|
||||
LD BC,10
|
||||
AND A
|
||||
SBC HL,BC
|
||||
LD (SZ_OBJ),HL
|
||||
POP IX
|
||||
AND A
|
||||
RET
|
||||
|
||||
DESTR1 LD BC,10
|
||||
ADD IX,BC
|
||||
LD A,(IX+1) ;END MARKER?
|
||||
INC A
|
||||
JP NZ,DESTR0
|
||||
LD A,(IX+0) ;END MARKER?
|
||||
INC A
|
||||
JP NZ,DESTR0
|
||||
POP IX
|
||||
SCF
|
||||
RET
|
||||
|
||||
WIN_X DW 0
|
||||
WIN_Y DW 0
|
||||
LOBJ_T DW LOBJTAB
|
||||
LOBJ_SZ DW 10
|
||||
|
||||
NN_OBJ DW 0
|
||||
SZ_OBJ DW 10
|
||||
|
||||
LOBJADR DW LOBJTAB,10,LOBJTAB,10,LOBJTAB,10
|
||||
DS 512
|
||||
|
||||
; WORD #FEFF ;OBJECT ID
|
||||
; WORDS 0,320 ;X-MIN -- X-MAX
|
||||
; WORDS 0,256 ;Y-MIN -- Y-MAX
|
||||
|
||||
OBJ_TAB DW #FFFF ;END MARKER
|
||||
DW #FFFF,#FFFF ;END MARKER
|
||||
DW #FFFF,#FFFF ;END MARKER
|
||||
DS 246
|
||||
|
||||
; WORD #FEFF ;OBJECT ID
|
||||
; WORDS 0,320 ;X-MIN -- X-MAX
|
||||
; WORDS 0,256 ;Y-MIN -- Y-MAX
|
||||
|
||||
LOBJTAB DW #FFFF ;END MARKER
|
||||
DW #FFFF,#FFFF ;END MARKER
|
||||
DW #FFFF,#FFFF ;END MARKER
|
||||
DS 2038
|
||||
|
||||
|
||||
16
INTERFACE/NEWFSIZ.TXT
Normal file
16
INTERFACE/NEWFSIZ.TXT
Normal file
@ -0,0 +1,16 @@
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
DB 6,3,5,6,6,7,7,3,4,4,6,6,4,6,3,6
|
||||
DB 6,4,6,6,6,6,6,6,6,6,3,4,5,7,5,6
|
||||
DB 6,6,6,6,6,6,6,6,6,4,5,6,6,6,6,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,4,6,4,5,6
|
||||
DB 3,6,6,6,6,6,5,6,6,4,5,5,4,6,6,6
|
||||
DB 6,6,6,6,5,6,6,6,6,6,6,4,3,4,6,6
|
||||
DB 6,6,6,6,7,6,6,6,6,6,6,6,6,6,6,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,7,6,6,7,6
|
||||
DB 6,6,6,6,7,6,6,6,6,6,6,6,6,6,6,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
|
||||
DB 6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,6
|
||||
DB 6,6,6,6,6,6,6,6,5,6,6,6,5,5,6,1
|
||||
2034
INTERFACE/WINDOW-H.ASM
Normal file
2034
INTERFACE/WINDOW-H.ASM
Normal file
File diff suppressed because it is too large
Load Diff
264
SPRITE_.ASM
Normal file
264
SPRITE_.ASM
Normal file
@ -0,0 +1,264 @@
|
||||
|
||||
X EQU BLACK
|
||||
g EQU DGRAY
|
||||
G EQU GRAY
|
||||
W EQU WHITE
|
||||
Y EQU BYELLOW
|
||||
y EQU YELLOW
|
||||
u EQU BLUE
|
||||
|
||||
SPRITE_
|
||||
DEFW 149 ;SIZE
|
||||
DEFW 11 ;CX
|
||||
DEFW 13 ;CY
|
||||
DEFB X,X,X,X,X,X,X,X,G,G,G
|
||||
DEFB X,W,W,W,W,W,W,X,X,G,G
|
||||
DEFB X,W,W,W,W,W,W,X,W,X,G
|
||||
DEFB X,W,W,W,W,W,W,X,X,X,X
|
||||
DEFB X,W,W,W,W,W,W,W,W,W,X
|
||||
DEFB X,W,W,W,W,W,W,W,W,W,X
|
||||
DEFB X,W,W,W,W,W,W,W,W,W,X
|
||||
DEFB X,W,W,W,W,W,W,W,W,W,X
|
||||
DEFB X,W,W,W,W,W,W,W,W,W,X
|
||||
DEFB X,W,W,W,W,W,W,W,W,W,X
|
||||
DEFB X,W,W,W,W,W,W,W,W,W,X
|
||||
DEFB X,W,W,W,W,W,W,W,W,W,X
|
||||
DEFB X,X,X,X,X,X,X,X,X,X,X
|
||||
|
||||
;SPRITE 2
|
||||
DEFW 202 ;SIZE
|
||||
DEFW 14 ;CX
|
||||
DEFW 14 ;CY
|
||||
DEFB g,g,g,g,g,g,g,g,g,g,g,g,g,X
|
||||
DEFB g,W,W,W,W,W,W,W,W,W,W,W,W,X
|
||||
DEFB g,W,W,W,W,W,W,W,W,W,W,W,W,X
|
||||
DEFB g,W,W,W,W,W,W,W,W,W,W,W,W,X
|
||||
DEFB g,g,g,g,g,g,g,g,g,g,g,g,g,X
|
||||
DEFB g,g,g,g,g,g,X,X,g,g,g,g,g,X
|
||||
DEFB g,g,g,g,g,X,g,g,W,g,g,g,g,X
|
||||
DEFB g,g,g,g,g,X,g,g,W,g,g,g,g,X
|
||||
DEFB g,g,g,g,g,g,W,W,g,g,g,g,g,X
|
||||
DEFB g,g,g,g,g,g,g,g,g,g,g,g,g,X
|
||||
DEFB g,g,g,g,g,g,X,W,g,g,g,g,g,X
|
||||
DEFB g,g,g,g,g,g,X,W,g,g,g,g,g,X
|
||||
DEFB g,g,g,g,g,g,g,g,g,g,g,g,g,X
|
||||
DEFB X,X,X,X,X,X,X,X,X,X,X,X,X,X
|
||||
|
||||
;SPRITE 3
|
||||
DEFW 201 ;SIZE
|
||||
DEFW 15 ;CX
|
||||
DEFW 13 ;CY
|
||||
DEFB G,G,G,G,G,G,G,G,G,X,X,X,G,G,G
|
||||
DEFB G,G,G,G,G,G,G,G,X,G,G,G,X,G,X
|
||||
DEFB G,G,G,G,G,G,G,G,G,G,G,G,G,X,X
|
||||
DEFB G,X,X,X,G,G,G,G,G,G,G,G,X,X,X
|
||||
DEFB X,Y,W,Y,X,X,X,X,X,X,X,G,G,G,G
|
||||
DEFB X,W,Y,W,Y,W,Y,W,Y,W,X,G,G,G,G
|
||||
DEFB X,Y,W,Y,W,Y,W,Y,W,Y,X,G,G,G,G
|
||||
DEFB X,W,Y,W,Y,X,X,X,X,X,X,X,X,X,X
|
||||
DEFB X,Y,W,Y,X,y,y,y,y,y,y,y,y,y,X
|
||||
DEFB X,W,Y,X,y,y,y,y,y,y,y,y,y,X,G
|
||||
DEFB X,Y,X,y,y,y,y,y,y,y,y,y,X,G,G
|
||||
DEFB X,X,y,y,y,y,y,y,y,y,y,X,G,G,G
|
||||
DEFB G,X,X,X,X,X,X,X,X,X,X,G,G,G,G
|
||||
|
||||
;SPRITE 4
|
||||
; DEFW 132 ;SIZE
|
||||
; DEFW 9 ;CX
|
||||
; DEFW 14 ;CY
|
||||
; DEFB G,G,X,G,G,G,X,G,G
|
||||
; DEFB G,G,X,G,G,G,X,G,G
|
||||
; DEFB G,G,X,G,G,G,X,G,G
|
||||
; DEFB G,G,X,X,G,X,X,G,G
|
||||
; DEFB G,G,G,X,G,X,G,G,G
|
||||
; DEFB G,G,G,X,X,X,G,G,G
|
||||
; DEFB G,G,G,G,X,G,G,G,G
|
||||
; DEFB G,G,G,u,X,u,G,G,G
|
||||
; DEFB G,G,G,u,G,u,u,u,G
|
||||
; DEFB G,u,u,u,G,u,G,G,u
|
||||
; DEFB u,G,G,u,G,u,G,G,u
|
||||
; DEFB u,G,G,u,G,u,G,G,u
|
||||
; DEFB u,G,G,u,G,G,u,u,G
|
||||
; DEFB G,u,u,G,G,G,G,G,G
|
||||
|
||||
DEFW 156 ;SIZE
|
||||
DEFW 10 ;CX
|
||||
DEFW 15 ;CY
|
||||
DEFB G,G,g,G,G,G,g,G,G,G
|
||||
DEFB G,G,g,W,G,G,g,W,G,G
|
||||
DEFB G,G,g,W,G,G,g,W,G,G
|
||||
DEFB G,G,g,g,G,g,g,W,G,G
|
||||
DEFB G,G,G,g,W,g,W,W,G,G
|
||||
DEFB G,G,G,g,g,g,W,G,G,G
|
||||
DEFB G,G,G,G,g,W,W,G,G,G
|
||||
DEFB G,G,G,g,g,g,G,G,G,G
|
||||
DEFB G,G,G,g,W,g,g,g,G,G
|
||||
DEFB G,g,g,g,W,g,W,W,g,G
|
||||
DEFB g,G,W,g,W,g,W,G,g,W
|
||||
DEFB g,W,G,g,W,g,W,G,g,W
|
||||
DEFB g,W,G,g,W,G,g,g,G,W
|
||||
DEFB G,g,g,G,W,G,G,W,W,G
|
||||
DEFB G,G,W,W,G,G,G,G,G,G
|
||||
|
||||
;SPRITE 5
|
||||
; DEFW 201 ;SIZE
|
||||
; DEFW 15 ;CX
|
||||
; DEFW 13 ;CY
|
||||
; DEFB X,X,X,X,X,X,G,G,G,G,G,G,G,G,G
|
||||
; DEFB X,W,W,W,W,X,X,G,G,G,G,G,G,G,G
|
||||
; DEFB X,W,W,W,W,X,W,X,G,G,G,G,G,G,G
|
||||
; DEFB X,W,X,X,W,X,u,u,u,u,u,u,G,G,G
|
||||
; DEFB X,W,W,W,W,W,u,W,W,W,W,u,u,G,G
|
||||
; DEFB X,W,X,X,X,X,u,W,W,W,W,u,W,u,G
|
||||
; DEFB X,W,W,W,W,W,u,W,u,u,W,u,u,u,u
|
||||
; DEFB X,W,X,X,X,X,u,W,W,W,W,W,W,W,u
|
||||
; DEFB X,W,W,W,W,W,u,W,u,u,u,u,u,W,u
|
||||
; DEFB X,X,X,X,X,X,u,W,W,W,W,W,W,W,u
|
||||
; DEFB G,G,G,G,G,G,u,W,u,u,u,u,u,W,u
|
||||
; DEFB G,G,G,G,G,G,u,W,W,W,W,W,W,W,u
|
||||
; DEFB G,G,G,G,G,G,u,u,u,u,u,u,u,u,u
|
||||
|
||||
DEFW 230 ;SIZE
|
||||
DEFW 16 ;CX
|
||||
DEFW 14 ;CY
|
||||
DEFB g,g,g,g,g,g,G,G,G,G,G,G,G,G,G,G
|
||||
DEFB g,W,W,W,W,g,g,G,G,G,G,G,G,G,G,G
|
||||
DEFB g,W,G,G,G,g,W,g,G,G,G,G,G,G,G,G
|
||||
DEFB g,W,g,g,G,g,g,g,g,g,g,g,G,G,G,G
|
||||
DEFB g,W,G,W,W,G,g,W,W,W,W,g,g,G,G,G
|
||||
DEFB g,W,g,g,g,g,g,W,G,G,G,g,W,g,G,G
|
||||
DEFB g,W,G,W,W,W,g,W,g,g,G,g,g,g,g,G
|
||||
DEFB g,W,g,g,g,g,g,W,G,W,W,G,W,W,g,W
|
||||
DEFB g,W,G,W,W,W,g,W,g,g,g,g,g,G,g,W
|
||||
DEFB g,g,g,g,g,g,g,W,G,W,W,W,W,W,g,W
|
||||
DEFB G,W,W,W,W,W,g,W,g,g,g,g,g,G,g,W
|
||||
DEFB G,G,G,G,G,G,g,W,G,W,W,W,W,W,g,W
|
||||
DEFB G,G,G,G,G,G,g,g,g,g,g,g,g,g,g,W
|
||||
DEFB G,G,G,G,G,G,G,W,W,W,W,W,W,W,W,W
|
||||
|
||||
;SPRITE 6
|
||||
DEFW 214 ;SIZE
|
||||
DEFW 16 ;CX
|
||||
DEFW 13 ;CY
|
||||
DEFB G,X,X,X,X,X,Y,Y,X,X,X,X,X,G,G,G
|
||||
DEFB X,y,g,y,X,Y,X,X,Y,X,g,y,g,X,G,G
|
||||
DEFB X,g,y,X,G,G,G,G,G,G,X,g,y,X,G,G
|
||||
DEFB X,y,g,X,X,X,X,X,X,X,X,y,g,X,G,G
|
||||
DEFB X,g,y,g,y,g,y,g,y,g,y,g,y,X,G,G
|
||||
DEFB X,y,g,y,g,y,u,u,u,u,u,u,u,X,G,G
|
||||
DEFB X,g,y,g,y,g,u,W,W,W,W,W,u,u,G,G
|
||||
DEFB X,y,g,y,g,y,u,W,W,W,W,W,u,W,u,G
|
||||
DEFB X,g,y,g,y,g,u,W,u,u,u,W,u,u,u,u
|
||||
DEFB X,y,g,y,g,y,u,W,W,W,W,W,W,W,W,u
|
||||
DEFB X,g,y,g,y,g,u,W,u,u,u,u,u,u,W,u
|
||||
DEFB G,X,X,X,X,X,u,W,W,W,W,W,W,W,W,u
|
||||
DEFB G,G,G,G,G,G,u,u,u,u,u,u,u,u,u,u
|
||||
|
||||
;SPRITE 7
|
||||
DEFW 126 ;SIZE
|
||||
DEFW 12 ;CX
|
||||
DEFW 10 ;CY
|
||||
DEFB G,G,G,G,X,X,X,X,G,G,G,G
|
||||
DEFB G,G,X,X,G,G,G,G,X,X,G,G
|
||||
DEFB G,X,G,G,G,G,G,G,G,G,X,G
|
||||
DEFB X,G,G,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,G,G,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,G,G,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,G,G,G,G,G,G,G,G,G,G,X
|
||||
DEFB G,X,G,G,G,G,G,G,G,G,X,G
|
||||
DEFB G,G,X,X,G,G,G,G,X,X,G,G
|
||||
DEFB G,G,G,G,X,X,X,X,G,G,G,G
|
||||
|
||||
;SPRITE 8
|
||||
DEFW 105 ;SIZE
|
||||
DEFW 11 ;CX
|
||||
DEFW 9 ;CY
|
||||
DEFB X,X,X,X,X,X,X,X,X,X,X
|
||||
DEFB X,G,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,G,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,G,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,G,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,G,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,G,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,G,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,X,X,X,X,X,X,X,X,X,X
|
||||
|
||||
;SPRITE 9
|
||||
DEFW 86 ;SIZE
|
||||
DEFW 10 ;CX
|
||||
DEFW 8 ;CY
|
||||
DEFB X,X,G,X,X,G,X,X,G,X
|
||||
DEFB G,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,G,G,G,G,G,G,G,G,G
|
||||
DEFB G,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,G,G,G,G,G,G,G,G,G
|
||||
DEFB G,G,G,G,G,G,G,G,G,X
|
||||
DEFB X,X,G,X,X,G,X,X,G,X
|
||||
|
||||
;SPRITE 10
|
||||
DEFW 97 ;SIZE
|
||||
DEFW 7 ;CX
|
||||
DEFW 13 ;CY
|
||||
DEFB G,G,G,G,G,X,G
|
||||
DEFB G,G,G,G,X,Y,X
|
||||
DEFB G,G,G,X,X,X,X
|
||||
DEFB G,G,G,X,Y,X,G
|
||||
DEFB G,G,X,Y,Y,X,G
|
||||
DEFB G,G,X,Y,X,G,G
|
||||
DEFB G,X,Y,Y,X,G,G
|
||||
DEFB G,X,Y,X,G,G,G
|
||||
DEFB X,X,Y,X,G,G,G
|
||||
DEFB X,X,X,G,G,G,G
|
||||
DEFB X,X,X,G,G,G,G
|
||||
DEFB X,X,G,G,G,G,G
|
||||
DEFB X,G,G,G,G,G,G
|
||||
|
||||
;SPRITE 11
|
||||
DEFW 96 ;SIZE
|
||||
DEFW 10 ;CX
|
||||
DEFW 9 ;CY
|
||||
DEFB X,X,G,G,G,G,G,G,G,G
|
||||
DEFB G,X,X,G,G,G,G,G,G,G
|
||||
DEFB G,G,X,X,G,G,G,G,G,G
|
||||
DEFB G,G,G,X,X,G,G,G,G,G
|
||||
DEFB G,G,G,G,X,X,G,G,G,G
|
||||
DEFB G,G,G,G,G,X,X,G,G,G
|
||||
DEFB G,G,G,G,G,G,X,X,G,G
|
||||
DEFB G,G,G,G,G,G,G,X,X,G
|
||||
DEFB G,G,G,G,G,G,G,G,X,X
|
||||
|
||||
|
||||
;SPRITE 12
|
||||
DEFW 188 ;SIZE
|
||||
DEFW 13 ;CX
|
||||
DEFW 14 ;CY
|
||||
DEFB G,G,G,G,X,X,X,G,G,G,G,G,G
|
||||
DEFB G,G,X,X,G,G,G,X,X,G,G,G,G
|
||||
DEFB G,X,g,W,W,W,G,G,g,X,G,G,G
|
||||
DEFB G,X,W,W,G,G,G,G,G,X,G,G,G
|
||||
DEFB X,G,W,G,G,G,G,G,G,G,X,G,G
|
||||
DEFB X,G,W,G,G,G,G,G,G,G,X,G,G
|
||||
DEFB X,G,G,G,G,G,G,G,G,G,X,G,G
|
||||
DEFB G,X,G,G,G,G,G,G,W,X,G,G,G
|
||||
DEFB G,X,g,G,G,G,G,W,g,X,g,G,G
|
||||
DEFB G,G,X,X,G,G,W,g,u,u,u,G,G
|
||||
DEFB G,G,G,G,X,X,X,u,G,u,u,u,G
|
||||
DEFB G,G,G,G,G,G,G,G,u,G,u,u,u
|
||||
DEFB G,G,G,G,G,G,G,G,G,u,G,u,u
|
||||
DEFB G,G,G,G,G,G,G,G,G,G,u,u,G
|
||||
|
||||
;SPRITE 13
|
||||
DEFW 48 ;SIZE
|
||||
DEFW 7 ;CX
|
||||
DEFW 6 ;CY
|
||||
DEFB X,X,G,G,G,X,X
|
||||
DEFB G,X,X,G,X,X,G
|
||||
DEFB G,G,X,X,X,G,G
|
||||
DEFB G,G,X,X,X,G,G
|
||||
DEFB G,X,X,G,X,X,G
|
||||
DEFB X,X,G,G,G,X,X
|
||||
|
||||
|
||||
|
||||
|
||||
100
SYS_EQU.ASM
Normal file
100
SYS_EQU.ASM
Normal file
@ -0,0 +1,100 @@
|
||||
|
||||
|
||||
BUTTON EQU #80
|
||||
ED_BOX EQU #81
|
||||
STATIC EQU #82
|
||||
LISTX EQU #83
|
||||
VSBAR EQU #84
|
||||
HSBAR EQU #85
|
||||
CH_BOX EQU #86
|
||||
RD_BUTT EQU #87
|
||||
GROUP EQU #88
|
||||
|
||||
M_ITEM EQU #01
|
||||
M_GRAY EQU #02
|
||||
M_BAR EQU #04
|
||||
M_END EQU #80
|
||||
|
||||
PAGE0 EQU #82
|
||||
PAGE1 EQU #A2
|
||||
PAGE2 EQU #C2
|
||||
PAGE3 EQU #E2
|
||||
Y_PORT EQU #89
|
||||
|
||||
BLACK EQU #F0
|
||||
RED EQU #F1
|
||||
GREEN EQU #F2
|
||||
YELLOW EQU #F3
|
||||
BLUE EQU #F4
|
||||
MAGENTA EQU #F5
|
||||
CYAN EQU #F6
|
||||
DGRAY EQU #F7
|
||||
GRAY EQU #F8
|
||||
BRED EQU #F9
|
||||
BGREEN EQU #FA
|
||||
BYELLOW EQU #FB
|
||||
BBLUE EQU #FC
|
||||
BMAGENT EQU #FD
|
||||
BCYAN EQU #FE
|
||||
WHITE EQU #FF
|
||||
|
||||
INIT EQU #0100
|
||||
DLGinit EQU #0103
|
||||
GETPARM EQU #0106
|
||||
POPUP EQU #0109
|
||||
RECTAN EQU #010C
|
||||
BPUSH EQU #010F
|
||||
BPOP EQU #0112
|
||||
POINT EQU #0115
|
||||
HZ2LINE EQU #0118
|
||||
HRUBBER EQU #011B
|
||||
VRUBBER EQU #011E
|
||||
PLACE EQU #0121
|
||||
CHARS EQU #0124
|
||||
OPTIMIZ EQU #0127
|
||||
SAVERG EQU #012A
|
||||
RESTRG EQU #012D
|
||||
CONST EQU #0130
|
||||
DESTR EQU #0133
|
||||
LCONST EQU #0136
|
||||
LDESTR EQU #0139
|
||||
LOBJECT EQU #013C
|
||||
WAITMSG EQU #013F
|
||||
INTMOUS EQU #0142
|
||||
INTON EQU #0145
|
||||
INTOFF EQU #0148
|
||||
|
||||
LST_INI EQU #014B
|
||||
LST_CLR EQU #014E
|
||||
SBV_WRK EQU #0151
|
||||
EDITBOX EQU #0154
|
||||
|
||||
SBODY EQU #0157
|
||||
SBMAX EQU #015A
|
||||
SBWIN EQU #015D
|
||||
SBVAL EQU #0160
|
||||
POSSX EQU #0163
|
||||
POSSY EQU #0166
|
||||
|
||||
RSBMAX EQU #0169
|
||||
RSBWIN EQU #016C
|
||||
RSBVAL EQU #016F
|
||||
RPOSSX EQU #0172
|
||||
RPOSSY EQU #0175
|
||||
PCHARX EQU #0178
|
||||
|
||||
DLGopen EQU #017B
|
||||
DLGclos EQU #017E
|
||||
|
||||
XFRAME EQU #0181
|
||||
|
||||
HBAR EQU #0184
|
||||
SBH_WRK EQU #0187
|
||||
SBLEN EQU #018A
|
||||
RSBLEN EQU #018D
|
||||
SBHGT EQU #0190
|
||||
RSBHGT EQU #0193
|
||||
INITSPR EQU #0196
|
||||
|
||||
|
||||
|
||||
570
WINDOS2.ASM
Normal file
570
WINDOS2.ASM
Normal file
@ -0,0 +1,570 @@
|
||||
|
||||
SDOS:
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
PUSH IX
|
||||
PUSH IY
|
||||
|
||||
LD C,3
|
||||
CALL INTMOUS
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
|
||||
CALL INTOFF
|
||||
DI
|
||||
LD A,(DOSPAGE)
|
||||
OUT (PAGE0),A
|
||||
; LD BC,#1FFD
|
||||
; LD A,1
|
||||
; OUT (C),A
|
||||
|
||||
POP HL
|
||||
POP DE
|
||||
LD C,4
|
||||
RST #30
|
||||
LD C,#83
|
||||
RST #30
|
||||
|
||||
POP IY
|
||||
POP IX
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
|
||||
RDOS: DI
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
PUSH IX
|
||||
PUSH IY
|
||||
|
||||
LD C,2
|
||||
RST #30
|
||||
LD C,3
|
||||
RST #30
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
|
||||
LD A,WINPAGE
|
||||
OUT (PAGE0),A
|
||||
|
||||
POP HL
|
||||
POP DE
|
||||
LD C,4
|
||||
CALL INTMOUS
|
||||
|
||||
LD C,1
|
||||
CALL INTMOUS
|
||||
|
||||
CALL INTON
|
||||
; LD BC,#1FFD
|
||||
; LD A,0
|
||||
; OUT (C),A
|
||||
|
||||
; POP HL
|
||||
; POP DE
|
||||
; LD C,4
|
||||
; CALL INTMOUS
|
||||
|
||||
POP IY
|
||||
POP IX
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
POP AF
|
||||
EI
|
||||
RET
|
||||
|
||||
REALN: DB "12345678.123",0
|
||||
|
||||
MFL: LD HL,DIRITEM
|
||||
LD DE,REALN
|
||||
LD BC,#0820
|
||||
RDF1: LD A,(HL)
|
||||
LD (DE),A
|
||||
CP C
|
||||
JR Z,RDF2
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ RDF1
|
||||
RDF2: LD A,"."
|
||||
LD (DE),A
|
||||
INC DE
|
||||
LD HL,EXTITEM
|
||||
LD BC,#0320
|
||||
RDF3: LD A,(HL)
|
||||
LD (DE),A
|
||||
CP C
|
||||
JR Z,RDF4
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ RDF3
|
||||
RDF4: XOR A
|
||||
LD (DE),A
|
||||
RET
|
||||
|
||||
|
||||
SV_FILE: CALL MFL
|
||||
CALL SDOS
|
||||
IN A,(#E2)
|
||||
PUSH AF
|
||||
LD HL,REALN
|
||||
CALL SAVERAM
|
||||
|
||||
; LD A,#0D
|
||||
; LD C,#F1 ;!!!
|
||||
; RST #10
|
||||
|
||||
EX AF,AF'
|
||||
CALL RDOS
|
||||
POP AF
|
||||
OUT (#E2),A
|
||||
EX AF,AF'
|
||||
RET
|
||||
|
||||
SAVERAM:
|
||||
XOR A
|
||||
LD C,#0A ;CREATE FILE
|
||||
RST #10
|
||||
RET C
|
||||
LD (F_HANDLE),A
|
||||
|
||||
; LD HL,0
|
||||
; LD IX,0
|
||||
; LD A,(F_HANDLE)
|
||||
; LD BC,#0215 ;MOVE FILE POINTER TO END FILE
|
||||
; RST #10
|
||||
; LD (SIZE1),HL
|
||||
; LD (SIZE0),IX
|
||||
; CALL MEM_CLK
|
||||
; JR C,CSFIL
|
||||
|
||||
CALL WRBLK
|
||||
;CSFIL
|
||||
LD A,(F_HANDLE)
|
||||
LD C,#12 ;CLOSE FILE
|
||||
RST #10
|
||||
RET
|
||||
|
||||
WRBLK:
|
||||
; LD HL,0
|
||||
; LD IX,0
|
||||
; LD A,(F_HANDLE)
|
||||
; LD BC,#0015 ;MOVE FILE POINTER TO START FILE
|
||||
; RST #10
|
||||
|
||||
LD A,#0D ;RAM DISK NUMBER
|
||||
LD C,#CE ;GET RAM DISK'S ID
|
||||
RST #08
|
||||
RET C
|
||||
LD B,0
|
||||
LD C,#C4 ;GET PHISICAL PAGE NUMBER
|
||||
RST #08
|
||||
RET C
|
||||
|
||||
LD DE,(FHSIZE)
|
||||
LD HL,(FLSIZE)
|
||||
BWAGAIN:
|
||||
AND A
|
||||
LD BC,#4000
|
||||
SBC HL,BC
|
||||
EX DE,HL
|
||||
LD BC,#0000
|
||||
SBC HL,BC
|
||||
EX DE,HL
|
||||
JR C,ENDBLOKSAVE
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
CALL WR1
|
||||
POP HL
|
||||
POP DE
|
||||
JR NC,BWAGAIN
|
||||
RET
|
||||
|
||||
ENDBLOKSAVE:
|
||||
LD BC,#4000
|
||||
ADD HL,BC
|
||||
EX DE,HL
|
||||
PUSH AF
|
||||
OUT (PAGE3),A
|
||||
;;;;;;;;;;
|
||||
LD A,7
|
||||
OUT (#FE),A
|
||||
;;;;;;;;;;
|
||||
LD HL,#C000
|
||||
; LD DE,#4000
|
||||
LD C,#14 ;WRITE FILE
|
||||
LD A,(F_HANDLE)
|
||||
RST #10
|
||||
POP BC
|
||||
RET C
|
||||
RET
|
||||
|
||||
WR1:
|
||||
;BWAGAIN
|
||||
PUSH AF
|
||||
OUT (PAGE3),A
|
||||
LD HL,#C000
|
||||
LD DE,#4000
|
||||
LD C,#14 ;WRITE FILE
|
||||
LD A,(F_HANDLE)
|
||||
RST #10
|
||||
POP BC
|
||||
RET C
|
||||
CP #FF
|
||||
SCF
|
||||
RET Z
|
||||
LD A,B
|
||||
LD C,#C7 ;GET NEXT PAGE
|
||||
RST #08
|
||||
RET C
|
||||
CP #FF
|
||||
SCF
|
||||
RET Z
|
||||
AND A
|
||||
RET
|
||||
|
||||
|
||||
RD_FILE: CALL MFL
|
||||
CALL SDOS
|
||||
IN A,(#E2)
|
||||
PUSH AF
|
||||
|
||||
LD HL,REALN
|
||||
CALL READRAM
|
||||
|
||||
; LD A,#0D
|
||||
; LD C,#F0
|
||||
; RST #10
|
||||
|
||||
|
||||
EX AF,AF'
|
||||
CALL RDOS
|
||||
POP AF
|
||||
OUT (#E2),A
|
||||
EX AF,AF'
|
||||
RET
|
||||
|
||||
F_HANDLE: DB 0
|
||||
|
||||
SIZE0: DW 0
|
||||
SIZE1: DW 0
|
||||
|
||||
READRAM:
|
||||
XOR A
|
||||
LD C,#11 ;OPEN FILE
|
||||
RST #10
|
||||
RET C
|
||||
LD (F_HANDLE),A
|
||||
|
||||
LD HL,0
|
||||
LD IX,0
|
||||
LD A,(F_HANDLE)
|
||||
LD BC,#0215 ;MOVE FILE POINTER TO END FILE
|
||||
RST #10
|
||||
LD (SIZE1),HL
|
||||
LD (SIZE0),IX
|
||||
CALL MEM_CLK
|
||||
JR C,CLFIL
|
||||
|
||||
CALL RDBLK
|
||||
CLFIL:
|
||||
LD A,(F_HANDLE)
|
||||
LD C,#12 ;CLOSE FILE
|
||||
RST #10
|
||||
RET
|
||||
|
||||
|
||||
MEM_CLK: LD HL,(SIZE1)
|
||||
LD BC,(SIZE0)
|
||||
LD DE,16384
|
||||
XOR A
|
||||
SCF
|
||||
KBT01: RR D
|
||||
RR E
|
||||
JR C,KBT02
|
||||
RR H
|
||||
RR L
|
||||
RR B
|
||||
RR C
|
||||
JR NC,KBT01
|
||||
LD A,1
|
||||
JR KBT01
|
||||
KBT02: OR A
|
||||
JR Z,KBT03
|
||||
INC BC
|
||||
KBT03: XOR A
|
||||
CP B
|
||||
SCF
|
||||
RET NZ
|
||||
LD B,C ;SIZE IN BLOCKS 16k
|
||||
PUSH BC
|
||||
LD A,#0D
|
||||
LD C,#93
|
||||
RST #08
|
||||
POP BC
|
||||
LD A,#0D
|
||||
LD C,#92
|
||||
RST #08
|
||||
RET
|
||||
|
||||
RDBLK:
|
||||
LD HL,0
|
||||
LD IX,0
|
||||
LD A,(F_HANDLE)
|
||||
LD BC,#0015 ;MOVE FILE POINTER TO START FILE
|
||||
RST #10
|
||||
|
||||
LD A,#0D ;RAM DISK NUMBER
|
||||
LD C,#CE ;GET RAM DISK'S ID
|
||||
RST #08
|
||||
RET C
|
||||
LD B,0
|
||||
LD C,#C4 ;GET PHISICAL PAGE NUMBER
|
||||
RST #08
|
||||
RET C
|
||||
BLAGAIN: PUSH AF
|
||||
OUT (PAGE3),A
|
||||
LD HL,#C000
|
||||
LD DE,#4000
|
||||
LD C,#13 ;READ FILE
|
||||
LD A,(F_HANDLE)
|
||||
RST #10
|
||||
POP BC
|
||||
RET C
|
||||
CP #FF
|
||||
RET Z
|
||||
LD A,B
|
||||
LD C,#C7 ;GET NEXT PAGE
|
||||
RST #08
|
||||
RET C
|
||||
CP #FF
|
||||
JR NZ,BLAGAIN
|
||||
RET
|
||||
|
||||
RD_DIR:
|
||||
LD A,(DISK)
|
||||
CALL CHDISK
|
||||
LD HL,PATH
|
||||
CALL CHDIR
|
||||
CALL GET_DIR
|
||||
RET
|
||||
|
||||
GET_DIR:
|
||||
CALL SDOS
|
||||
IN A,(#E2)
|
||||
PUSH AF
|
||||
LD A,DIRPAGE
|
||||
OUT (#E2),A
|
||||
LD HL,#C000
|
||||
LD DE,#C001
|
||||
LD BC,#3FFF
|
||||
LD (HL),L
|
||||
LDIR
|
||||
|
||||
CALL READDIR
|
||||
|
||||
PUSH AF
|
||||
CALL RDOS
|
||||
|
||||
CALL SORT
|
||||
LD HL,PLACED
|
||||
LD DE,#C000
|
||||
LD BC,#2000
|
||||
LDIR
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
POP AF
|
||||
OUT (#E2),A
|
||||
EX AF,AF'
|
||||
RET
|
||||
|
||||
DIRBUF: DS 44
|
||||
|
||||
PATH0: DB "*.*",0
|
||||
|
||||
READDIR:
|
||||
; LD HL,PATH0
|
||||
; LD C,#1E ;CURDIR
|
||||
; RST #10
|
||||
LD HL,PATH0
|
||||
LD DE,DIRBUF
|
||||
LD A,#37
|
||||
LD BC,#0019 ;F_FIRST
|
||||
RST #10
|
||||
LD DE,#C000 ;DIR
|
||||
JR C,NO_DIR
|
||||
F_NEXT_ENTRY:
|
||||
LD A,(DIRBUF+32) ;ATTRIBUT
|
||||
; BIT 4,A
|
||||
; CALL Z,TOLOWER
|
||||
LD HL,DIRBUF+33 ;NAME
|
||||
LD BC,11
|
||||
LDIR
|
||||
LD (DE),A
|
||||
INC DE
|
||||
LD HL,DIRBUF+12 ;OTHER INFORMATION
|
||||
LD BC,20
|
||||
LDIR
|
||||
PUSH DE
|
||||
LD DE,DIRBUF
|
||||
LD C,#1A ;F_NEXT
|
||||
RST #10
|
||||
POP DE
|
||||
JR NC,F_NEXT_ENTRY
|
||||
NO_DIR: EX DE,HL
|
||||
LD (HL),0
|
||||
RET
|
||||
|
||||
CHDISK:
|
||||
PUSH AF
|
||||
CALL SDOS
|
||||
POP AF
|
||||
LD C,1
|
||||
RST #10
|
||||
PUSH AF
|
||||
CALL RDOS
|
||||
POP AF
|
||||
RET
|
||||
|
||||
|
||||
CHDIR: CALL SDOS
|
||||
LD C,29
|
||||
RST #10
|
||||
PUSH AF
|
||||
CALL RDOS
|
||||
POP AF
|
||||
RET NC
|
||||
LD (#BF00),A
|
||||
LD A,7
|
||||
OUT (#FE),A
|
||||
LD IY,#5C3A
|
||||
RET
|
||||
|
||||
CH_DIR: LD DE,CHPATH
|
||||
LD BC,11
|
||||
LDIR
|
||||
EX DE,HL
|
||||
LD B,11
|
||||
LD A,#20
|
||||
RUN002: DEC HL
|
||||
CP (HL)
|
||||
JR NZ,RUN003
|
||||
DJNZ RUN002
|
||||
RUN003: INC HL
|
||||
LD (HL),'\' ;
|
||||
INC HL
|
||||
LD (HL),#00
|
||||
LD HL,CHPATH
|
||||
CALL CHDIR
|
||||
CALL GET_DIR
|
||||
RET
|
||||
|
||||
DISK: DB #02
|
||||
|
||||
CHPATH: DB "123456781230",0
|
||||
|
||||
PATH: DB 'C:' ;
|
||||
;DB 'C:\' ; ;!FIXIT
|
||||
DS 255
|
||||
|
||||
DIRS: DEFW 0
|
||||
POSITER: DEFW 0
|
||||
|
||||
FILES: DEFW 0
|
||||
|
||||
SORT: LD IX,#C000
|
||||
LD HL,#E020
|
||||
LD (ENDSORT),HL
|
||||
LD HL,0
|
||||
LD (FILES),HL
|
||||
SORT_: LD A,(IX+0)
|
||||
CP #E5
|
||||
JP Z,ADDERA
|
||||
OR A
|
||||
RET Z
|
||||
CP "."
|
||||
JP NZ,SORTC
|
||||
LD A,(IX+1)
|
||||
CP #20
|
||||
JP Z,ADDERA
|
||||
SORTC: LD A,(IX+11)
|
||||
LD E,A
|
||||
AND #08
|
||||
JP NZ,ADDERA
|
||||
LD A,E
|
||||
AND #10
|
||||
JP NZ,ITDIREC
|
||||
LD B,11
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
SORT_00: LD A,(DE)
|
||||
CP "A"
|
||||
JP C,SORT_01
|
||||
CP "["
|
||||
JP NC,SORT_01
|
||||
ADD A,#20
|
||||
SORT_01: LD (DE),A
|
||||
INC DE
|
||||
DJNZ SORT_00
|
||||
ITDIREC: LD D,XH
|
||||
LD E,XL
|
||||
CALL SORTER
|
||||
LD HL,(FILES)
|
||||
INC HL
|
||||
LD (FILES),HL
|
||||
ADDERA: LD BC,#0020
|
||||
ADD IX,BC
|
||||
JP SORT_
|
||||
|
||||
SORTER: LD HL,PLACED
|
||||
SORTER0: LD A,(HL)
|
||||
OR A
|
||||
JP Z,SORTINS
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
LD B,11
|
||||
SORT1: LD A,(DE) ;(DE) < (HL) "C"
|
||||
CP (HL) ;(DE) >= (HL) "NC"
|
||||
JP NZ,SORT2
|
||||
INC DE
|
||||
INC HL
|
||||
DJNZ SORT1
|
||||
SORT2: POP HL
|
||||
POP DE
|
||||
JP C,SORTINS
|
||||
SORT3: LD BC,#0020
|
||||
ADD HL,BC
|
||||
JP SORTER0
|
||||
SORTINS: PUSH DE
|
||||
PUSH HL
|
||||
EX DE,HL
|
||||
LD HL,(ENDSORT)
|
||||
PUSH HL
|
||||
AND A
|
||||
SBC HL,DE
|
||||
LD B,H
|
||||
LD C,L
|
||||
POP DE
|
||||
LD HL,#0020
|
||||
ADD HL,DE
|
||||
LD (ENDSORT),HL
|
||||
JP Z,EMPPLC
|
||||
EX DE,HL
|
||||
DEC HL
|
||||
DEC DE
|
||||
LDDR
|
||||
EMPPLC: POP DE
|
||||
POP HL
|
||||
LD BC,#0020
|
||||
LDIR
|
||||
RET
|
||||
|
||||
ENDSORT: DEFW #E020
|
||||
|
||||
PLACED: EQU #E000
|
||||
Loading…
Reference in New Issue
Block a user