bug fixes

This commit is contained in:
Tolik 2025-07-11 01:54:35 +10:00
parent 2db8eaa037
commit 29d51ab763
5 changed files with 183 additions and 154 deletions

View File

@ -1,40 +1,64 @@
;ORG_ ORG #8100 ;ORG_ ORG #8100
INTA: EQU #80 INTA: EQU #80
MSH: EQU 19 MSH: EQU 19
IPOINT: EQU 8 ;IPOINT: EQU 8
;DOSPAGE EQU #00 ;DOSPAGE EQU #00
WINPAGE: EQU #08 ;#20 ; WINPAGE: EQU #08 ;#20
DIRPAGE: EQU #09 ;#21 ; DIRPAGE: EQU #09 ;#21
;[BEGIN] ;[BEGIN]
; ;
; 2DSTUDIO.EXE ; 2DSTUDIO.EXE
; ;
ORG #8100-512 ORG #8100-23
; INCLUDE "dos_equ.asm" ; INCLUDE "dos_equ.asm"
INCLUDE "SYS_EQU.ASM" INCLUDE "SYS_EQU.ASM"
DB "EXE" ;EXE ID EXE_HEADER: DB "EXE" ;EXE ID
DB #00 ;EXE VERSION DB #00 ;EXE VERSION
DW #0200 ;CODE OFFSET LOW DW EXE_HEADER.Size ;CODE OFFSET LOW
DW #0000 ;CODE OFFSET HIGH DW #0000 ;CODE OFFSET HIGH
DW #0000 ;END-BEG ;PRIMARY LOADER DW #0000 ;END-BEG ;PRIMARY LOADER
DW #0000 ; DW #0000 ;
DW #0000 ;RESERVED DW #0000 ;RESERVED
DW #0000 ; DW #0000 ;
DW BEGIN ;LOAD ADDRESS DW _DATA_ ;LOAD ADDRESS
DW BEGIN ;START ADDRESS DW BEGIN ;START ADDRESS
DW #8000 ;STACK ADDRESS DW STACK_POINT ;STACK ADDRESS
DS 490 DB 0
.Size EQU $ - EXE_HEADER
;DS 490-1
_DATA_: BLOCK 128
STACK_POINT EQU $+1
WINPAGE: DB #FF
DIRPAGE: DB #FF
BEGIN: DI BEGIN: DI
JP START_2DS ;JP START_2DS
JP IKEYBOARD ;JP IKEYBOARD
START_2DS: LD (_SP+1),SP START_2DS: ;LD (_SP+1),SP
LD SP,#80F0 ;LD SP,#80F0
PUSH IX PUSH IX
;
LD BC,1*256 + #3D ; getmem
RST #10
JR NC,.ok_1
;
.exit: LD BC,#1E*256 + #41 ; Exit - ­¥¤®áâ â®ç­® ¯ ¬ïâ¨
RST #10
;
.ok_1: LD (WINPAGE),A
LD BC,1*256 + #3D ; getmem
RST #10
JR C,.exit
LD (DIRPAGE),A
;
POP HL POP HL
INC HL INC HL
INC HL INC HL
@ -65,8 +89,7 @@ GETFNAME:
JR NC,CONT_2DS JR NC,CONT_2DS
XOR A XOR A
LD (LOADING),A LD (LOADING),A
CONT_2DS: CONT_2DS: LD C,#51
LD C,#51
RST #10 RST #10
LD (CURRMODE),A LD (CURRMODE),A
LD A,#81 LD A,#81
@ -82,40 +105,35 @@ CONT_2DS:
LD C,PAGE0 LD C,PAGE0
IN B,(C) IN B,(C)
PUSH BC ;PUSH BC
LD A,B LD A,B
LD (DOSPAGE),A LD (DOSPAGE),A
LD A,WINPAGE LD A,(WINPAGE)
DI
OUT (C),A OUT (C),A
LD HL,WN_FACE LD HL,WN_FACE
LD DE,#100 LD DE,0
LD BC,WN_FACE.Size LD BC,WN_FACE.Size
LDIR LDIR
POP BC ;POP BC
OUT (PAGE0),A ;LD A,B
;OUT (PAGE0),A
CALL GO CALL GO
; LD A,DOSPAGE ;
; OUT (PAGE0),A LD A,(WINPAGE)
; LD A,2
; LD C,0
; RST #18
LD A,WINPAGE
OUT (PAGE0),A OUT (PAGE0),A
LD C,#93 LD C,#93
LD A,#0E LD A,#0E
CALL IPOINT ;CLEAR RST 8 ;CLEAR
LD BC,#0592 LD BC,#0592
LD A,#0E LD A,#0E
CALL IPOINT ;GET MEMORY RST 8 ;GET MEMORY
LD BC,#0094 LD BC,#0094
LD HL,PIXPAGE LD HL,PIXPAGE
SLEPAGE: LD A,#0E SLEPAGE: LD A,#0E
PUSH HL PUSH HL
PUSH BC PUSH BC
CALL IPOINT ;GET PAGES RST 8 ;GET PAGES
POP BC POP BC
POP HL POP HL
LD (HL),A LD (HL),A
@ -128,17 +146,17 @@ SLEPAGE: LD A,#0E
; LD HL,#4000 ; LD HL,#4000
; LD BC,#0880 ; LD BC,#0880
; LD E,1 ; LD E,1
; CALL IPOINT ; RST 8
LD HL,PALCOL ;SET DESKTOP PALETTE LD HL,PALCOL ;SET DESKTOP PALETTE
LD DE,#12EE ;& CURSOR COLORS LD DE,#12EE ;& CURSOR COLORS
LD BC,#FFA4 ;#EE,#EF LD BC,#FFA4 ;#EE,#EF
XOR A XOR A
CALL IPOINT RST 8
LD HL,PALCOL ;SET DESKTOP PALETTE LD HL,PALCOL ;SET DESKTOP PALETTE
LD DE,#12EE ;& CURSOR COLORS LD DE,#12EE ;& CURSOR COLORS
LD BC,#FFA4 ;#EE,#EF LD BC,#FFA4 ;#EE,#EF
LD A,1 LD A,1
CALL IPOINT RST 8
POP DE POP DE
POP HL POP HL
@ -175,20 +193,13 @@ SLEPAGE: LD A,#0E
; OUT (PAGE3),A ; OUT (PAGE3),A
LD A,0 LD A,0
OUT (Y_PORT),A OUT (Y_PORT),A
EXIT: ;LD BC,#0080 EXIT: DI
; LD E,0
; CALL #3D13
DI
; LD IY,#5C3A
LD A,(DOSPAGE) LD A,(DOSPAGE)
OUT (PAGE0),A OUT (PAGE0),A
;_SP LD SP,#0000
EI EI
LD A,(CLEARRAM) LD A,(CLEARRAM)
OR A OR A
JR NZ,NOCLEAR0 JR NZ,NOCLEAR0
;GET ID 1-ST RAMDISK ;GET ID 1-ST RAMDISK
LD A,#0D ;RAM DISK NUMBER LD A,#0D ;RAM DISK NUMBER
LD C,#CE ;GET RAM DISK'S ID LD C,#CE ;GET RAM DISK'S ID
@ -202,7 +213,6 @@ EXIT: ;LD BC,#0080
LD C,#CA ;FREE DRIVE LD C,#CA ;FREE DRIVE
LD A,#0D LD A,#0D
RST #08 RST #08
SKK1: SKK1:
;GET ID 2-ND RAMDISK ;GET ID 2-ND RAMDISK
LD A,#0E ;RAM DISK NUMBER LD A,#0E ;RAM DISK NUMBER
@ -218,9 +228,7 @@ SKK1:
LD A,#0E LD A,#0E
RST #08 RST #08
SKK2: SKK2:
NOCLEAR0: NOCLEAR0:
LD C,2 LD C,2
RST #30 RST #30
@ -233,13 +241,16 @@ NOCLEAR0:
LD C,#5C LD C,#5C
RST #10 RST #10
DI ; DI
_SP: LD SP,#0000 ; _SP: LD SP,#0000
EI ; EI
LD B,0 LD BC,#41
LD C,#41
RST #10 RST #10
RET ;RET
PALCOL: ; B G R PALCOL: ; B G R
DB #00,#00,#00,#00 ;CURSOR DB #00,#00,#00,#00 ;CURSOR
@ -264,8 +275,8 @@ PALCOL: ; B G R
INCLUDE "GRAFOPEN.ASM" INCLUDE "GRAFOPEN.ASM"
IKEYBOARD: ;IKEYBOARD:
RET ; RET
DO_LOADING: DO_LOADING:
XOR A XOR A
@ -409,7 +420,7 @@ OPEN2DS: LD HL,SPRITE_
LD DE,#12EE ;& CURSOR COLORS LD DE,#12EE ;& CURSOR COLORS
LD BC,#FFA4 ;#EE,#EF LD BC,#FFA4 ;#EE,#EF
LD A,1 LD A,1
CALL IPOINT RST 8
LD HL,PALCOL ;SET DESKTOP PALETTE LD HL,PALCOL ;SET DESKTOP PALETTE
LD DE,#EE*4+NEWPAL LD DE,#EE*4+NEWPAL
LD BC,#12*4 LD BC,#12*4
@ -1165,7 +1176,7 @@ PB1: CALL PUSHBUT
LD DE,#12EE ;& CURSOR COLORS LD DE,#12EE ;& CURSOR COLORS
LD BC,#FFA4 ;#EE,#EF LD BC,#FFA4 ;#EE,#EF
LD A,1 LD A,1
CALL IPOINT RST 8
LD HL,PALCOL ;SET DESKTOP PALETTE LD HL,PALCOL ;SET DESKTOP PALETTE
LD DE,#EE*4+NEWPAL LD DE,#EE*4+NEWPAL
LD BC,#12*4 LD BC,#12*4
@ -2086,7 +2097,7 @@ PRMBUFF: DB 0
WN_FACE: WN_FACE:
MODULE _INTERFACE_ MODULE _INTERFACE_
DISP #100 DISP 0
INCLUDE "interface/face.asm" INCLUDE "interface/face.asm"
;INCLUDE "interface/face_alt.asm" ;INCLUDE "interface/face_alt.asm"
ENT ENT

View File

@ -118,7 +118,7 @@ ADI LD BC,#0020
GETH IN A,(#E2) GETH IN A,(#E2)
PUSH AF PUSH AF
LD A,DIRPAGE LD A,(DIRPAGE)
OUT (#E2),A OUT (#E2),A
GETH1 LD A,(HL) GETH1 LD A,(HL)
OR A OR A
@ -639,22 +639,22 @@ AREApix EQU #C000
CONVERT DI CONVERT DI
LD C,#93 LD C,#93
LD A,#0E LD A,#0E
CALL IPOINT ;CLEAR "S" RST 8 ;CLEAR "S"
; LD C,#93 ; LD C,#93
; LD A,#0D ; LD A,#0D
; CALL IPOINT ;CLEAR "R" ; RST 8 ;CLEAR "R"
;; LD BC,#0592 ;; LD BC,#0592
;; LD A,#0E ;; LD A,#0E
;; CALL IPOINT ;CREATE "S" ;; RST 8 ;CREATE "S"
; LD BC,#0592 ; LD BC,#0592
; LD A,#0D ; LD A,#0D
; CALL IPOINT ;CREATE "R" ; RST 8 ;CREATE "R"
LD BC,#0094 LD BC,#0094
LD HL,FLEPAGE LD HL,FLEPAGE
SL2PAGE LD A,#0D SL2PAGE LD A,#0D
PUSH HL PUSH HL
PUSH BC PUSH BC
CALL IPOINT ;GET PAGES RST 8 ;GET PAGES
POP BC POP BC
POP HL POP HL
LD (HL),A LD (HL),A
@ -667,13 +667,13 @@ SL2PAGE LD A,#0D
JP NZ,SL2PAGE JP NZ,SL2PAGE
EDP001 LD C,#92 EDP001 LD C,#92
LD A,#0E LD A,#0E
CALL IPOINT ;CREATE "S" RST 8 ;CREATE "S"
LD BC,#0094 LD BC,#0094
LD HL,PIXPAGE LD HL,PIXPAGE
SL3PAGE LD A,#0E SL3PAGE LD A,#0E
PUSH HL PUSH HL
PUSH BC PUSH BC
CALL IPOINT ;GET PAGES RST 8 ;GET PAGES
POP BC POP BC
POP HL POP HL
LD (HL),A LD (HL),A
@ -689,7 +689,7 @@ EDP002 CALL TURNBMP
LD DE,#0000 ;! EE (00) AMOUNT COLORS LD DE,#0000 ;! EE (00) AMOUNT COLORS
LD BC,#FFA4 LD BC,#FFA4
LD A,1 ;PALETTE FOR MODE 8(!) LD A,1 ;PALETTE FOR MODE 8(!)
CALL IPOINT ;SET PALETTE RST 8 ;SET PALETTE
EI EI
AND A AND A
RET RET
@ -1142,13 +1142,13 @@ ROVNO2 POP BC
MAKEBMP DI MAKEBMP DI
; LD C,#93 ; LD C,#93
; LD A,#0E ; LD A,#0E
; CALL IPOINT ;CLEAR "S" ; RST 8 ;CLEAR "S"
LD C,#93 LD C,#93
LD A,#0D LD A,#0D
CALL IPOINT ;CLEAR "R" RST 8 ;CLEAR "R"
; LD BC,#0592 ; LD BC,#0592
; LD A,#0E ; LD A,#0E
; CALL IPOINT ;CREATE "S" ; RST 8 ;CREATE "S"
LD HL,(FLSIZE) LD HL,(FLSIZE)
LD (SIZE0),HL LD (SIZE0),HL
@ -1158,14 +1158,14 @@ MAKEBMP DI
; LD BC,#0592 ; LD BC,#0592
; LD A,#0D ; LD A,#0D
; CALL IPOINT ;CREATE "R" ; RST 8 ;CREATE "R"
LD BC,#0094 LD BC,#0094
LD HL,PIXPAGE LD HL,PIXPAGE
SLXPAGE LD A,#0E SLXPAGE LD A,#0E
PUSH HL PUSH HL
PUSH BC PUSH BC
CALL IPOINT ;GET PAGES RST 8 ;GET PAGES
POP BC POP BC
POP HL POP HL
LD (HL),A LD (HL),A
@ -1179,7 +1179,7 @@ SLXPAGE LD A,#0E
SX2PAGE LD A,#0D SX2PAGE LD A,#0D
PUSH HL PUSH HL
PUSH BC PUSH BC
CALL IPOINT ;GET PAGES RST 8 ;GET PAGES
POP BC POP BC
POP HL POP HL
LD (HL),A LD (HL),A

View File

@ -1,58 +1,62 @@
APOINT EQU 8 ;#3D13 ;APOINT: EQU 8 ;#3D13
GO DI GO: ;DI
LD IX,TAB00 LD IX,TAB00
LD HL,#0000 LD HL,#0000
LD E,1 LD E,1
LD C,#B0 LD C,#B0
CALL APOINT RST 8
;
LD IX,TAB01 LD IX,TAB01
LD HL,#0703 LD HL,#0703
LD E,1 LD E,1
LD C,#B0 LD C,#B0
CALL APOINT RST 8
;
LD IX,TAB02 LD IX,TAB02
LD HL,#0826 LD HL,#0826
LD E,1 LD E,1
LD C,#B0 LD C,#B0
CALL APOINT RST 8
;
LD IX,TAB03 LD IX,TAB03
LD HL,#0000 LD HL,#0000
LD E,1 LD E,1
LD C,#B0 LD C,#B0
CALL APOINT RST 8
;
LD IX,TAB04 LD IX,TAB04
LD HL,#0000 LD HL,#0000
LD E,1 LD E,1
LD C,#B0 LD C,#B0
CALL APOINT RST 8
RET RET
TAB00 DEFB 40,32,#00,#00,#20,#00,#08,#00 TAB00: DEFB 40,32,#00,#00,#20,#00,#08,#00
TAB01 DEFB 33,23,#03,#07,#60,#00,#0B,#07 TAB01: DEFB 33,23,#03,#07,#60,#00,#0B,#07
TAB02 DEFB 01,21,038,#08,#60,#00,046,#08 TAB02: DEFB 01,21,038,#08,#60,#00,046,#08
TAB03 DEFB 08,02,028,#04,#60,#00,#24,#04 TAB03: DEFB 08,02,028,#04,#60,#00,#24,#04
TAB04 DEFB 02,02,037,#04,#60,#00,#2D,#04 TAB04: DEFB 02,02,037,#04,#60,#00,#2D,#04
NORTAB DEFB 12,23,#0F,#07,#20,#00,#17,#07 NORTAB: DEFB 12,23,#0F,#07,#20,#00,#17,#07
SECTAB DEFB 12,23,#0F,#07,#60,#00,#17,#07 SECTAB: DEFB 12,23,#0F,#07,#60,#00,#17,#07
SETNWIN DI SETNWIN: DI
LD IX,NORTAB LD IX,NORTAB
LD HL,#0F07 LD HL,#0F07
LD E,1 LD E,1
LD C,#B0 LD C,#B0
CALL IPOINT RST 8
EI EI
RET RET
SETAWIN DI SETAWIN: DI
LD IX,SECTAB LD IX,SECTAB
LD HL,#0F07 LD HL,#0F07
LD E,1 LD E,1
LD C,#B0 LD C,#B0
CALL IPOINT RST 8
EI EI
RET RET

View File

@ -1,30 +1,48 @@
;ORG_ ORG #0000
; DISP #0000
INTA EQU #80 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
; ORG 0
JP NULL_0
;INT BIOS
BLOCK 8-$,#FF
PUSH AF
LD A,#00
OUT (#7C),A
POP AF
RET
;INT DOS
BLOCK #10-$,#FF
JP NULL_0
;INT DISK
BLOCK #18-$,#FF
JP NULL_0
BLOCK #20-$,#FF
JP RST_20
BLOCK #28-$,#FF
JP NULL_0
;INT MOUSE
BLOCK #30-$,#FF
JP NULL_0
;INTERRUPT
BLOCK #38-$,#FF
A0038 JP RST_38
BLOCK #100-$,#FF
JP INIT JP INIT
JP DLGinit JP DLGinit
JP GETPARM JP GETPARM
@ -367,8 +385,4 @@ ADRST20;
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
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 DS #F0
;
; ENT
_______

View File

@ -50,7 +50,7 @@ RDOS: DI
PUSH DE PUSH DE
PUSH HL PUSH HL
LD A,WINPAGE LD A,(WINPAGE)
OUT (PAGE0),A OUT (PAGE0),A
POP HL POP HL
@ -359,7 +359,7 @@ GET_DIR:
CALL SDOS CALL SDOS
IN A,(#E2) IN A,(#E2)
PUSH AF PUSH AF
LD A,DIRPAGE LD A,(DIRPAGE)
OUT (#E2),A OUT (#E2),A
LD HL,#C000 LD HL,#C000
LD DE,#C001 LD DE,#C001