mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
tst
This commit is contained in:
parent
3814444250
commit
b45094a6f5
@ -534,6 +534,12 @@ GET_BPB: LD HL,#0000
|
|||||||
JP NC,.loop3
|
JP NC,.loop3
|
||||||
.loop3.end: ;
|
.loop3.end: ;
|
||||||
LD (FatBuffer.BytesPerCluster),HL
|
LD (FatBuffer.BytesPerCluster),HL
|
||||||
|
; LD DE,#8001 ; 能恥丞<E681A5> <20> <20>妞丞 物<>漭<EFBFBD> &恢镼 32 炕 - 郊 祚中丞成<E4B89E>乒摬 ; !TODO
|
||||||
|
; AND A
|
||||||
|
; SBC HL,DE
|
||||||
|
; CCF
|
||||||
|
; RET C ; [ ] fixed bug, thanks to @Romychs (Roman Boykov)
|
||||||
|
;
|
||||||
LD HL,(BOOT_BUFFER + BOOT_SECTOR.SectorsPerDrive)
|
LD HL,(BOOT_BUFFER + BOOT_SECTOR.SectorsPerDrive)
|
||||||
LD BC,0
|
LD BC,0
|
||||||
LD A,H
|
LD A,H
|
||||||
|
|||||||
@ -180,7 +180,7 @@ TMPNAME: DZ ' ' ; 12
|
|||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; IN: A - drive number
|
; IN: A - drive number
|
||||||
OPENDSK:;!TEST DRV.Open ®¡å®¤ R10
|
OPENDSK: ;!TEST DRV.Open ®¡å®¤ R10
|
||||||
LD C,A
|
LD C,A
|
||||||
LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
|
LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
|
||||||
CP C
|
CP C
|
||||||
@ -211,8 +211,7 @@ OPENDSK:;!TEST DRV.Open
|
|||||||
CALL RD_BPB
|
CALL RD_BPB
|
||||||
;[x] 29/02/2024 fix "open drive error"
|
;[x] 29/02/2024 fix "open drive error"
|
||||||
POP DE
|
POP DE
|
||||||
LD A,D
|
JR C,.error_bpb
|
||||||
JR C,.error_disk
|
|
||||||
; RET C
|
; RET C
|
||||||
;
|
;
|
||||||
.exit: LD A,(LDRIVE)
|
.exit: LD A,(LDRIVE)
|
||||||
@ -224,22 +223,42 @@ OPENDSK:;!TEST DRV.Open
|
|||||||
RET Z
|
RET Z
|
||||||
LD A,DSS_Error.sys.NOT_READY
|
LD A,DSS_Error.sys.NOT_READY
|
||||||
RET
|
RET
|
||||||
;[x] 29/02/2024 fix "open drive error"
|
;[x] 29/02/2024 fix "open drive error"; 20/06/2024 fixed
|
||||||
.error_disk:
|
.error_bpb: PUSH AF ; á®åà 塞 ®¬¥à ®è¨¡ª¨
|
||||||
|
LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
|
||||||
|
CP D
|
||||||
|
JR Z,.next_check
|
||||||
|
;
|
||||||
|
LD A,D
|
||||||
|
CP #FF
|
||||||
|
SCF
|
||||||
|
JR Z,.set_panic
|
||||||
|
;
|
||||||
|
LD (CORE_BUFFERS.FatBuffer.DRIVE),A
|
||||||
CALL OPENDSK.force
|
CALL OPENDSK.force
|
||||||
LD A,(BOOTDSK.NUM)
|
LD A,(BOOTDSK.NUM)
|
||||||
|
LD (CORE_BUFFERS.FatBuffer.DRIVE),A
|
||||||
CALL C,OPENDSK.force
|
CALL C,OPENDSK.force
|
||||||
; ¯à®¢¥àª ®è¨¡ªã
|
|
||||||
LD HL,.NOT_READY
|
|
||||||
LD E, +(80-.NOT_READY.size)/2 ; coord X
|
|
||||||
LD BC,.NOT_READY.size
|
|
||||||
JP C,KERNEL_PANIC
|
|
||||||
;
|
;
|
||||||
LD A,DSS_Error.sys.NOT_READY
|
.err_exit: LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
|
||||||
SCF
|
ADD 'A'
|
||||||
|
LD (CORE_BUFFERS.CurrentPath),A
|
||||||
|
POP AF
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.NOT_READY: DZ "Boot drive not ready..."
|
.next_check: LD A,(BOOTDSK.NUM)
|
||||||
|
CP D
|
||||||
|
SCF
|
||||||
|
.reBPB: CALL NZ,OPENDSK.force
|
||||||
|
; ¯à®¢¥àª ®è¨¡ªã
|
||||||
|
.set_panic: LD HL,.NOT_READY
|
||||||
|
LD E, +(80-.NOT_READY.size)/2 ; coord X
|
||||||
|
LD BC,.NOT_READY.size
|
||||||
|
JR NC,.err_exit
|
||||||
|
JP KERNEL_PANIC
|
||||||
|
;
|
||||||
|
.errorCycle: DB 0
|
||||||
|
.NOT_READY: DZ "Boot drive error..."
|
||||||
.NOT_READY.size EQU $-.NOT_READY
|
.NOT_READY.size EQU $-.NOT_READY
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|||||||
@ -547,6 +547,10 @@ LOADDIR: ;!TODO optimize
|
|||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
;!TODO FAT procedures
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
LOAD_SAVE_DIR_PREPARE:
|
LOAD_SAVE_DIR_PREPARE:
|
||||||
;!TODO optimize
|
;!TODO optimize
|
||||||
XOR A ; FILE MANIPULATOR = 0
|
XOR A ; FILE MANIPULATOR = 0
|
||||||
@ -571,7 +575,56 @@ LOAD_SAVE_DIR_PREPARE:
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;!TODO FAT procedures
|
;----------------------------------------------------------------------;
|
||||||
|
; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ ) de ix iy
|
||||||
|
; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||||
|
; ¢å®¤: (HANDBUF) - § ¯¨áì ª â «®£
|
||||||
|
WRT_HND: SET_PAGE_X DIRPAGE
|
||||||
|
EX AF,AF'
|
||||||
|
LD HL,DIRPAGE.buffer
|
||||||
|
;!TEST 9/11/23 record index
|
||||||
|
; EXX
|
||||||
|
; LD DE,0
|
||||||
|
; EXX
|
||||||
|
;
|
||||||
|
LD BC,FAT_DIRECTORY_RECORD
|
||||||
|
.loop: ;LD A,(IX+00)
|
||||||
|
LD A,(HL)
|
||||||
|
OR A
|
||||||
|
JR Z,.WRT_HN2
|
||||||
|
CP #E5
|
||||||
|
JR Z,.WRT_HN2
|
||||||
|
;ADD IX,BC
|
||||||
|
ADD HL,BC
|
||||||
|
JR NC,.loop ;!FIXIT ª®«¨ç¥á⢮ § ¯¨á¥© ª â «®£ = áâà ¨æ
|
||||||
|
;
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,DSS_Error.sys.ROOT_OVERFLOW
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.WRT_HN2: ;LD D,XH
|
||||||
|
;LD E,XL
|
||||||
|
EX DE,HL
|
||||||
|
LD HL,HANDBUF
|
||||||
|
LD BC,HANDBUF.SIZE
|
||||||
|
LDIR
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD HL,DIRPAGE.buffer
|
||||||
|
LD BC,(SAVEDIR.DIRSIZE)
|
||||||
|
DEC BC
|
||||||
|
ADD HL,BC
|
||||||
|
AND A
|
||||||
|
SBC HL,DE
|
||||||
|
JR NC,SAVEDIR
|
||||||
|
LD HL,(SAVEDIR.DIRSIZE)
|
||||||
|
LD BC,(CORE_BUFFERS.FatBuffer.BytesPerCluster)
|
||||||
|
ADD HL,BC
|
||||||
|
LD (SAVEDIR.DIRSIZE),HL
|
||||||
|
AND A
|
||||||
|
;JP SAVEDIR
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; ‘¡à®á¨âì ª¥è ª â «®£ ¤¨áª.
|
; ‘¡à®á¨âì ª¥è ª â «®£ ¤¨áª.
|
||||||
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
||||||
@ -619,62 +672,6 @@ SAVEDIR: ;!TODO optimize
|
|||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
|
||||||
; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ ) de ix iy
|
|
||||||
; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
|
||||||
; ¢å®¤: (HANDBUF) - § ¯¨áì ª â «®£
|
|
||||||
WRT_HND: SET_PAGE_X DIRPAGE
|
|
||||||
EX AF,AF'
|
|
||||||
;
|
|
||||||
;LD IX,DIRPAGE.buffer
|
|
||||||
LD HL,DIRPAGE.buffer
|
|
||||||
;!TEST 9/11/23 record index
|
|
||||||
; EXX
|
|
||||||
; LD DE,0
|
|
||||||
; EXX
|
|
||||||
;
|
|
||||||
LD BC,FAT_DIRECTORY_RECORD
|
|
||||||
.loop: ;LD A,(IX+00)
|
|
||||||
LD A,(HL)
|
|
||||||
OR A
|
|
||||||
JR Z,.WRT_HN2
|
|
||||||
CP #E5
|
|
||||||
JR Z,.WRT_HN2
|
|
||||||
;ADD IX,BC
|
|
||||||
ADD HL,BC
|
|
||||||
JR NC,.loop ;!FIXIT ª®«¨ç¥á⢮ § ¯¨á¥© ª â «®£ = áâà ¨æ
|
|
||||||
;
|
|
||||||
EX AF,AF'
|
|
||||||
OUT (SLOT3),A
|
|
||||||
LD A,DSS_Error.sys.ROOT_OVERFLOW
|
|
||||||
SCF
|
|
||||||
RET
|
|
||||||
.WRT_HN2:
|
|
||||||
;LD D,XH
|
|
||||||
;LD E,XL
|
|
||||||
EX DE,HL
|
|
||||||
LD HL,HANDBUF
|
|
||||||
LD BC,HANDBUF.SIZE
|
|
||||||
LDIR
|
|
||||||
EX AF,AF'
|
|
||||||
OUT (SLOT3),A
|
|
||||||
LD HL,DIRPAGE.buffer
|
|
||||||
LD BC,(SAVEDIR.DIRSIZE)
|
|
||||||
DEC BC
|
|
||||||
ADD HL,BC
|
|
||||||
AND A
|
|
||||||
SBC HL,DE
|
|
||||||
JP NC,SAVEDIR
|
|
||||||
LD HL,(SAVEDIR.DIRSIZE)
|
|
||||||
LD BC,(CORE_BUFFERS.FatBuffer.BytesPerCluster)
|
|
||||||
ADD HL,BC
|
|
||||||
LD (SAVEDIR.DIRSIZE),HL
|
|
||||||
AND A
|
|
||||||
JP SAVEDIR
|
|
||||||
;----------------------------------------------------------------------;
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
; [x] fat32 ;!TEST
|
; [x] fat32 ;!TEST
|
||||||
RD_BPB: ; LD C,SLOT3
|
RD_BPB: ; LD C,SLOT3
|
||||||
@ -811,6 +808,10 @@ RD_BPB: ; LD C,SLOT3
|
|||||||
JP NC,.loop3
|
JP NC,.loop3
|
||||||
.loop3.end: ;
|
.loop3.end: ;
|
||||||
LD (CORE_BUFFERS.FatBuffer.BytesPerCluster),HL
|
LD (CORE_BUFFERS.FatBuffer.BytesPerCluster),HL
|
||||||
|
;LD DE,#8001 ; ¯à®¢¥àª à §¬¥à ª« áâ¥à ¡®«ìè¥ 32 ª¡ - ¥ ¯®¤¤¥à¦¨¢ ¥âáï ; !TODO
|
||||||
|
;AND A
|
||||||
|
;SBC HL,DE
|
||||||
|
;JP NC,DOS_X_Error.UnknownBPB ; [ ] fixed bug, thanks to @Romychs (Roman Boykov)
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
;!TODO ¥ ¨á¯®«ì§ã¥âáï § ç¥¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ï¥¬ë¥ ¢ FatBuffer
|
;!TODO ¥ ¨á¯®«ì§ã¥âáï § ç¥¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ï¥¬ë¥ ¢ FatBuffer
|
||||||
; EX DE,HL
|
; EX DE,HL
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
; MOUSE
|
; MOUSE
|
||||||
DEFINE MOUSE_COM_BAUD 0 ; 1 - 2485, 2 - 4807, else - 1215 (default)
|
DEFINE MOUSE_COM_BAUD 0 ; 1 - 2485, 2 - 4807, else - 1215 (default)
|
||||||
DEFINE MOUSE_INT_ENABLED 0 ; INT from SIO ch. B
|
DEFINE MOUSE_INT_ENABLED 0 ; INT from SIO ch. B
|
||||||
;DEFINE MOUSE_READ_PORT_TIMEOUT 3072 ; Š®áâë«ìë© â ©¬- ãâ ®¦¨¤ ¨¥ ¡ ©â ®â ¬ë誨. <EFBFBD>à®áâ® ¥áâì ªà¨¢ë¥ ¯¥à¥å®¤¨ª¨
|
DEFINE MOUSE_READ_PORT_TIMEOUT 16*1024 ; Š®áâë«ìë© â ©¬- ãâ ®¦¨¤ ¨¥ ¡ ©â ®â ¬ë誨.
|
||||||
|
|
||||||
; KEYBOARD
|
; KEYBOARD
|
||||||
DEFINE KEYBOARD_INT_ENABLED 0 ; INT from SIO ch. A
|
DEFINE KEYBOARD_INT_ENABLED 0 ; INT from SIO ch. A
|
||||||
|
|||||||
@ -7,6 +7,32 @@
|
|||||||
PORT_MOUSE.Ctrl EQU Z84.SIO.Ch_B.Ctrl
|
PORT_MOUSE.Ctrl EQU Z84.SIO.Ch_B.Ctrl
|
||||||
PORT_MOUSE.Data EQU Z84.SIO.Ch_B.Data
|
PORT_MOUSE.Data EQU Z84.SIO.Ch_B.Data
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
MACRO READ_MOUSE_PACKET
|
||||||
|
IF MOUSE_INT_ENABLED
|
||||||
|
IN A,(PORT_MOUSE.Ctrl)
|
||||||
|
RRCA
|
||||||
|
RET NC
|
||||||
|
ELSE
|
||||||
|
;[x] mouse freeeeezzzz
|
||||||
|
;LD BC,MOUSE_READ_PORT_TIMEOUT
|
||||||
|
;
|
||||||
|
.READ_BYTE: IN A,(PORT_MOUSE.Ctrl)
|
||||||
|
RRCA
|
||||||
|
;[x] mouse freeeeezzzz
|
||||||
|
;JR C,.NEXT
|
||||||
|
;DEC BC
|
||||||
|
;LD A,B
|
||||||
|
;OR C
|
||||||
|
;JR NZ,.READ_BYTE
|
||||||
|
;RET
|
||||||
|
JR NC,.READ_BYTE
|
||||||
|
.NEXT: ;
|
||||||
|
ENDIF
|
||||||
|
ENDM
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
; MOUSE SOFTWARE SPECIFICATION
|
; MOUSE SOFTWARE SPECIFICATION
|
||||||
;---------------------------------------------
|
;---------------------------------------------
|
||||||
; COMMAND 00h (INITIALIZATION)
|
; COMMAND 00h (INITIALIZATION)
|
||||||
@ -636,9 +662,19 @@ CLEAR_MOUSE_BUFFER:
|
|||||||
IN A,(Z84.SIO.Ch_B.Data)
|
IN A,(Z84.SIO.Ch_B.Data)
|
||||||
IN A,(Z84.SIO.Ch_B.Ctrl)
|
IN A,(Z84.SIO.Ch_B.Ctrl)
|
||||||
RRCA
|
RRCA
|
||||||
|
IF MOUSE_INT_ENABLED
|
||||||
|
JR C,CLEAR_MOUSE_BUFFER
|
||||||
|
;
|
||||||
|
XOR A
|
||||||
|
LD (READ_M.Step),A
|
||||||
|
RET
|
||||||
|
ELSE
|
||||||
|
;RET NC
|
||||||
|
;JR CLEAR_MOUSE_BUFFER
|
||||||
JR C,CLEAR_MOUSE_BUFFER
|
JR C,CLEAR_MOUSE_BUFFER
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
ENDIF
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
@ -648,71 +684,97 @@ READ_M: ;[ ] 18/02/2024
|
|||||||
OUT (PORT_MOUSE.Ctrl),A
|
OUT (PORT_MOUSE.Ctrl),A
|
||||||
IN A,(PORT_MOUSE.Ctrl)
|
IN A,(PORT_MOUSE.Ctrl)
|
||||||
AND %0010'0000 ; check receiver overrun error
|
AND %0010'0000 ; check receiver overrun error
|
||||||
; JP NZ,.Receiver_Overrun
|
IF MOUSE_INT_ENABLED
|
||||||
|
JR Z,.Prepare
|
||||||
|
ELSE
|
||||||
JR Z,.READ_FIRST_BYTE
|
JR Z,.READ_FIRST_BYTE
|
||||||
|
ENDIF
|
||||||
; reg 0 - error reset
|
; reg 0 - error reset
|
||||||
LD A,%0011'0000
|
LD A,%0011'0000
|
||||||
OUT (Z84.SIO.Ch_B.Ctrl),A
|
OUT (Z84.SIO.Ch_B.Ctrl),A
|
||||||
JP CLEAR_MOUSE_BUFFER
|
; reg 0 - return from int
|
||||||
|
;LD A,%0011'1000
|
||||||
|
;OUT (Z84.SIO.Ch_B.Ctrl),A
|
||||||
|
;
|
||||||
|
JR CLEAR_MOUSE_BUFFER
|
||||||
|
;
|
||||||
|
IF MOUSE_INT_ENABLED
|
||||||
|
.Prepare: LD HL,.Step
|
||||||
|
LD A,(HL)
|
||||||
|
OR A
|
||||||
|
JR Z,.READ_FIRST_BYTE
|
||||||
|
DEC A
|
||||||
|
JR Z,.READ_SECOND_BYTE
|
||||||
|
DEC A
|
||||||
|
JR Z,.READ_THIRD_BYTE
|
||||||
|
XOR A
|
||||||
|
LD (HL),A
|
||||||
|
ENDIF
|
||||||
.READ_FIRST_BYTE:
|
.READ_FIRST_BYTE:
|
||||||
IN A,(PORT_MOUSE.Ctrl)
|
IN A,(PORT_MOUSE.Ctrl)
|
||||||
RRCA
|
RRCA
|
||||||
RET NC
|
RET NC
|
||||||
; AND 1
|
|
||||||
; RET Z
|
|
||||||
|
|
||||||
IN A,(PORT_MOUSE.Data)
|
IN A,(PORT_MOUSE.Data)
|
||||||
|
IF MOUSE_INT_ENABLED
|
||||||
|
LD (.Reg_L),A
|
||||||
|
ELSE
|
||||||
LD L,A
|
LD L,A
|
||||||
|
ENDIF
|
||||||
AND %0100'0000
|
AND %0100'0000
|
||||||
;BIT 6,A
|
;RET Z
|
||||||
;CCF
|
JP Z,CLEAR_MOUSE_BUFFER
|
||||||
RET Z
|
;
|
||||||
|
IF MOUSE_INT_ENABLED
|
||||||
;[x] mouse freeeeezzzz
|
INC (HL)
|
||||||
;LD BC,MOUSE_READ_PORT_TIMEOUT
|
ENDIF
|
||||||
;
|
;
|
||||||
.READ_SECOND_BYTE:
|
.READ_SECOND_BYTE:
|
||||||
IN A,(PORT_MOUSE.Ctrl)
|
READ_MOUSE_PACKET
|
||||||
RRCA
|
|
||||||
;[x] mouse freeeeezzzz
|
|
||||||
;JR C,.NXT_1
|
|
||||||
;DEC BC
|
|
||||||
;LD A,B
|
|
||||||
;OR C
|
|
||||||
;JR NZ,.TST_01
|
|
||||||
;RET
|
|
||||||
JR NC,.READ_SECOND_BYTE
|
|
||||||
;
|
;
|
||||||
|
|
||||||
;.NXT_1:
|
|
||||||
IN A,(PORT_MOUSE.Data)
|
IN A,(PORT_MOUSE.Data)
|
||||||
|
IF MOUSE_INT_ENABLED
|
||||||
|
LD (.Reg_E),A
|
||||||
|
AND %0100'0000
|
||||||
|
JR Z,.nxt1
|
||||||
|
LD (HL),0
|
||||||
|
JR .READ_FIRST_BYTE
|
||||||
|
.nxt1: ;
|
||||||
|
INC (HL)
|
||||||
|
ELSE
|
||||||
LD E,A
|
LD E,A
|
||||||
AND %0100'0000
|
AND %0100'0000
|
||||||
;CCF
|
;!TEST
|
||||||
RET NZ
|
RET NZ
|
||||||
|
;JR Z,.READ_THIRD_BYTE
|
||||||
;[x] mouse freeeeezzzz
|
;LD L,E
|
||||||
;LD BC,MOUSE_READ_PORT_TIMEOUT
|
;JR .READ_SECOND_BYTE
|
||||||
|
ENDIF
|
||||||
;
|
;
|
||||||
.READ_LAST_BYTE:
|
.READ_THIRD_BYTE:
|
||||||
IN A,(PORT_MOUSE.Ctrl)
|
READ_MOUSE_PACKET
|
||||||
RRCA
|
|
||||||
;[x] mouse freeeeezzzz
|
|
||||||
;JR C,.NXT_2
|
|
||||||
;DEC BC
|
|
||||||
;LD A,B
|
|
||||||
;OR C
|
|
||||||
;JR NZ,.READ_LAST_BYTE
|
|
||||||
;RET
|
|
||||||
JR NC,.READ_LAST_BYTE
|
|
||||||
;
|
;
|
||||||
;.NXT_2:
|
|
||||||
IN A,(PORT_MOUSE.Data)
|
IN A,(PORT_MOUSE.Data)
|
||||||
LD D,A
|
IF MOUSE_INT_ENABLED
|
||||||
;BIT 6,A
|
LD (.Reg_D),A
|
||||||
AND %0100'0000
|
AND %0100'0000
|
||||||
;CCF
|
JR Z,.nxt2
|
||||||
|
LD (HL),0
|
||||||
|
JR .READ_FIRST_BYTE
|
||||||
|
.nxt2: ;
|
||||||
|
LD (HL),0
|
||||||
|
LD DE,(.Reg_E)
|
||||||
|
LD HL,(.Reg_L)
|
||||||
|
ELSE
|
||||||
|
LD D,A
|
||||||
|
AND %0100'0000
|
||||||
|
;!TEST
|
||||||
RET NZ
|
RET NZ
|
||||||
|
;JR Z,.packet_end
|
||||||
|
;LD L,D
|
||||||
|
;JR .READ_SECOND_BYTE
|
||||||
|
.packet_end: ;
|
||||||
|
ENDIF
|
||||||
|
;
|
||||||
; ¢á¥ âਠ¡ ©â ¯ ª¥â ¯à®ç¨â ë
|
; ¢á¥ âਠ¡ ©â ¯ ª¥â ¯à®ç¨â ë
|
||||||
;
|
;
|
||||||
LD A,E
|
LD A,E
|
||||||
@ -724,6 +786,7 @@ READ_M: ;[ ] 18/02/2024
|
|||||||
RRCA
|
RRCA
|
||||||
OR E
|
OR E
|
||||||
LD E,A
|
LD E,A
|
||||||
|
|
||||||
LD A,D
|
LD A,D
|
||||||
AND #3F
|
AND #3F
|
||||||
LD D,A
|
LD D,A
|
||||||
@ -735,16 +798,24 @@ READ_M: ;[ ] 18/02/2024
|
|||||||
RRCA
|
RRCA
|
||||||
OR D
|
OR D
|
||||||
LD D,A
|
LD D,A
|
||||||
|
;
|
||||||
|
; LD A,L
|
||||||
|
; RLCA
|
||||||
|
; RLCA
|
||||||
|
; RLCA
|
||||||
|
; RES 6,A
|
||||||
|
; JR NC,.STBU
|
||||||
|
; SET 6,A
|
||||||
|
; .STBU: RLCA
|
||||||
|
; RLCA
|
||||||
|
; AND #03
|
||||||
LD A,L
|
LD A,L
|
||||||
RLCA
|
AND #30
|
||||||
RLCA
|
RRCA
|
||||||
RLCA
|
RRCA
|
||||||
RES 6,A
|
RRCA
|
||||||
JR NC,.STBU
|
RRCA
|
||||||
SET 6,A
|
;
|
||||||
.STBU: RLCA
|
|
||||||
RLCA
|
|
||||||
AND #03
|
|
||||||
LD (MOUSE_BUTTONS),A
|
LD (MOUSE_BUTTONS),A
|
||||||
CALL SENSE
|
CALL SENSE
|
||||||
LD (MOUSE_COORDINATES),DE
|
LD (MOUSE_COORDINATES),DE
|
||||||
@ -754,25 +825,13 @@ READ_M: ;[ ] 18/02/2024
|
|||||||
; LD (MY),A
|
; LD (MY),A
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
;[ ] 14/03/2024 能恥丞<E681A5> <20> 砲鄍祚垠平言 ~銗<EFBD9E>
|
|
||||||
/*
|
|
||||||
.Receiver_Overrun:
|
|
||||||
; empty the buffer
|
|
||||||
IN A,(Z84.SIO.Ch_B.Data)
|
|
||||||
IN A,(Z84.SIO.Ch_B.Ctrl)
|
|
||||||
RRCA
|
|
||||||
JR C,.Receiver_Overrun
|
|
||||||
; reg 0 - error reset
|
|
||||||
LD A,%0011'0000
|
|
||||||
OUT (Z84.SIO.Ch_B.Ctrl),A
|
|
||||||
;!TEST
|
|
||||||
; reg 0 - return from int
|
|
||||||
; LD A,%0011'1000
|
|
||||||
; OUT (Z84.SIO.Ch_B.Ctrl),A
|
|
||||||
;
|
;
|
||||||
RET
|
IF MOUSE_INT_ENABLED
|
||||||
*/
|
.Reg_L: DB 0
|
||||||
|
.Reg_E: DB 0
|
||||||
|
.Reg_D: DB 0
|
||||||
|
.Step: DB 0
|
||||||
|
ENDIF
|
||||||
|
|
||||||
MCORECT:
|
MCORECT:
|
||||||
LD HL,(PIX_X)
|
LD HL,(PIX_X)
|
||||||
|
|||||||
@ -21,7 +21,7 @@ cmd_chdir:
|
|||||||
dec hl
|
dec hl
|
||||||
.chdir: ld c,Dss.ChDir ; ᬥ¨âì ⥪. ª â «®£
|
.chdir: ld c,Dss.ChDir ; ᬥ¨âì ⥪. ª â «®£
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||||
jp Get_Path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
jp Get_Path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
||||||
; ; ¢ë¢®¤ á¨áâ. ¯ã⨠íªà
|
; ; ¢ë¢®¤ á¨áâ. ¯ã⨠íªà
|
||||||
; ld c,8Eh ; ã§ âì ¯®«®¦. ªãàá®à
|
; ld c,8Eh ; ã§ âì ¯®«®¦. ªãàá®à
|
||||||
|
|||||||
@ -304,15 +304,9 @@ Print_Header: ; %1
|
|||||||
ld bc,16+16+16-1-2
|
ld bc,16+16+16-1-2
|
||||||
ldir
|
ldir
|
||||||
;
|
;
|
||||||
ld hl,Buffers.work.free + 256 + 128 ; á¨áâ. ¯ãâì
|
ld hl,Buffers.work.free + 256 + 128; 屺徕. <20>忪
|
||||||
ld de,Buffers.bat_params.PRM3 + 2 ;+PRM4..5. 2 + 48 ¡ ©â®¢ ¡ãä¥à
|
ld de,Buffers.bat_params.PRM3 + 2 ;+PRM4..5. 2 + 48 ¡ ©â®¢ ¡ãä¥à
|
||||||
call make_short_path
|
call make_short_path
|
||||||
;pop hl
|
|
||||||
|
|
||||||
; ld hl,Buffers.screen_path ; !FIXIT ¥á«¨ ¢¢¥á⨠"DIR gamez\*.*", â® ®â®¡à ¦ ¥¬ë© ¯ãâì ¢ § £®«®¢ª¥ ¡ã¤¥â ¥¢¥àë¬
|
|
||||||
; ld de,PRM3 ;+PRM4 ; 32 ¡ ©â ¡ãä¥à
|
|
||||||
; CALL copy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
|
||||||
;
|
|
||||||
ld de,MAIN_MSG.DIR_1 ; ¨¤¥ªá "Volume in drive %1..."
|
ld de,MAIN_MSG.DIR_1 ; ¨¤¥ªá "Volume in drive %1..."
|
||||||
JP ECHO_MESSAGE ; ¢ë¢¥á⨠áâபã
|
JP ECHO_MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||||
;
|
;
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
406
|
407
|
||||||
Loading…
Reference in New Issue
Block a user