Old version

This commit is contained in:
Tolik 2025-07-11 00:15:20 +10:00
commit 2db8eaa037
16 changed files with 12039 additions and 0 deletions

2094
2DSTUDIO.ASM Normal file

File diff suppressed because it is too large Load Diff

1431
2DS_DISK.ASM Normal file

File diff suppressed because it is too large Load Diff

60
GRAFOPEN.ASM Normal file
View 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

File diff suppressed because it is too large Load Diff

374
INTERFACE/FACE.ASM Normal file
View 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
View 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

Binary file not shown.

666
INTERFACE/INTMOUSE.ASM Normal file
View 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
View 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
View 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
View 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

File diff suppressed because it is too large Load Diff

264
SPRITE_.ASM Normal file
View 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
View 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

1508
TOOLS.ASM Normal file

File diff suppressed because it is too large Load Diff

570
WINDOS2.ASM Normal file
View 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