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