mirror of
https://github.com/Tolik-Trek/ZX-SP-ROMs.git
synced 2026-06-15 09:21:45 +03:00
internal boot can flip through pages
This commit is contained in:
parent
d297c9f907
commit
ff7566be45
62
SP_TRDOS.ASM
62
SP_TRDOS.ASM
@ -577,22 +577,25 @@ AUTO_0359:
|
|||||||
|
|
||||||
; [x] 13/06/2025 boot loader from TR-DOS vROM
|
; [x] 13/06/2025 boot loader from TR-DOS vROM
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
PREPARE_TO_vROM_BOOT:
|
; PREPARE_TO_vROM_BOOT:
|
||||||
LD A,(ZX_VARS.RUN_AUTO_BOOT)
|
; LD A,(ZX_VARS.RUN_AUTO_BOOT)
|
||||||
AND A ; ¯à¨§ ª ¯®¯ë⪨ § ¯ã᪠boot ª®¬ ¤®© RUN ¡¥§ ¯ à ¬¥â஢
|
; AND A ; ¯à¨§ ª ¯®¯ë⪨ § ¯ã᪠boot ª®¬ ¤®© RUN ¡¥§ ¯ à ¬¥â஢
|
||||||
JP Z,AUTO_03D9
|
; JP Z,AUTO_03D9
|
||||||
;
|
; ;
|
||||||
DI
|
; DI
|
||||||
LD HL,(ZX_VARS.ADR_RET)
|
; JP vROM_BOOT
|
||||||
|
|
||||||
|
vROM_BOOT: LD HL,(ZX_VARS.ADR_RET)
|
||||||
LD (ZX_VARS.FL_START),HL ; ¢à¥¬¥® á®åà 塞 ADR_RET
|
LD (ZX_VARS.FL_START),HL ; ¢à¥¬¥® á®åà 塞 ADR_RET
|
||||||
LD HL,vROM_BOOT ; ¤à¥á ¢®§¢à â ¨§ AUTO_01D3
|
LD HL,vROM_BOOT.continue ; ¤à¥á ¢®§¢à â ¨§ AUTO_01D3
|
||||||
LD (ZX_VARS.ADR_RET),HL
|
LD (ZX_VARS.ADR_RET),HL
|
||||||
JP AUTO_01D3
|
JP AUTO_01D3
|
||||||
;
|
;
|
||||||
vROM_BOOT: LD HL,(ZX_VARS.FL_START)
|
;vROM_BOOT:
|
||||||
|
.continue: LD HL,(ZX_VARS.FL_START)
|
||||||
LD (ZX_VARS.ADR_RET),HL ; ¢®ááâ ¢«¨¢ ¥¬ ADR_RET
|
LD (ZX_VARS.ADR_RET),HL ; ¢®ááâ ¢«¨¢ ¥¬ ADR_RET
|
||||||
;
|
;
|
||||||
LD HL,BOOT_PART_1.SIZE + BOOT_PART_2.SIZE
|
LD HL,BOOT_PART_1.SIZE + BOOT_PART_2.SIZE + BOOT_PART_3.SIZE
|
||||||
LD (ZX_VARS.FL_START),HL ; ¤«¨ ¯à®£à ¬¬ë á ¯¥à¥¬¥ë¬¨.
|
LD (ZX_VARS.FL_START),HL ; ¤«¨ ¯à®£à ¬¬ë á ¯¥à¥¬¥ë¬¨.
|
||||||
LD (ZX_VARS.FL_LEN),HL ; ¤«¨ ¯à®£à ¬¬ë á ¯¥à¥¬¥ë¬¨.
|
LD (ZX_VARS.FL_LEN),HL ; ¤«¨ ¯à®£à ¬¬ë á ¯¥à¥¬¥ë¬¨.
|
||||||
;
|
;
|
||||||
@ -608,7 +611,10 @@ vROM_BOOT: LD HL,(ZX_VARS.FL_START)
|
|||||||
LD HL,BOOT_PART_2
|
LD HL,BOOT_PART_2
|
||||||
LD BC,BOOT_PART_2.SIZE
|
LD BC,BOOT_PART_2.SIZE
|
||||||
LDIR
|
LDIR
|
||||||
;
|
LD HL,BOOT_PART_3
|
||||||
|
LD BC,BOOT_PART_3.SIZE
|
||||||
|
LDIR
|
||||||
|
|
||||||
;LD HL,.StartAddr + BOOT_PART_1.SIZE + BOOT_PART_2.SIZE - 3
|
;LD HL,.StartAddr + BOOT_PART_1.SIZE + BOOT_PART_2.SIZE - 3
|
||||||
LD HL,vROM_Boot.StartLineNum
|
LD HL,vROM_Boot.StartLineNum
|
||||||
LD (ZX_VARS.E_LINE),HL
|
LD (ZX_VARS.E_LINE),HL
|
||||||
@ -1214,9 +1220,27 @@ AUTO_07E7:
|
|||||||
WG93_EXE_:
|
WG93_EXE_:
|
||||||
AND 252
|
AND 252
|
||||||
JP WG93_EXE
|
JP WG93_EXE
|
||||||
|
;**************************************
|
||||||
|
|
||||||
|
|
||||||
|
;**************************************
|
||||||
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
|
; [x] 13/06/2025 boot loader from TR-DOS vROM
|
||||||
|
BOOT_PART_3: INCBIN 'build/boot.bin',429
|
||||||
|
.SIZE EQU $-BOOT_PART_3
|
||||||
|
;
|
||||||
|
; PREPARE_TO_vROM_BOOT:
|
||||||
|
; LD A,(ZX_VARS.RUN_AUTO_BOOT)
|
||||||
|
; AND A ; ¯à¨§ ª ¯®¯ë⪨ § ¯ã᪠boot ª®¬ ¤®© RUN ¡¥§ ¯ à ¬¥â஢
|
||||||
|
; JP Z,AUTO_03D9
|
||||||
|
; DI
|
||||||
|
; JP vROM_BOOT
|
||||||
|
;**************************************
|
||||||
|
|
||||||
|
|
||||||
;**************************************
|
;**************************************
|
||||||
;INCLUDE 'trdos/tr_HDD_4.asz'
|
;INCLUDE 'trdos/tr_HDD_4.asz'
|
||||||
_mInfoBLOCK #0840-$,255
|
; _mInfoBLOCK #0840-$,255
|
||||||
INCLUDE 'trdos/tr_msd_3.asz'
|
INCLUDE 'trdos/tr_msd_3.asz'
|
||||||
|
|
||||||
|
|
||||||
@ -1224,7 +1248,7 @@ WG93_EXE_:
|
|||||||
;!TODO russian charset
|
;!TODO russian charset
|
||||||
;ZG_RUS: DB 3 ; ¨¤¥â¨ä¨ª â®à ¢¥àᨨ TR-DOS ???
|
;ZG_RUS: DB 3 ; ¨¤¥â¨ä¨ª â®à ¢¥àᨨ TR-DOS ???
|
||||||
;**************************************
|
;**************************************
|
||||||
INCLUDE 'trdos/tr_msd_2.asz'
|
;INCLUDE 'trdos/tr_msd_2.asz'
|
||||||
|
|
||||||
; DSS 0E00h,255
|
; DSS 0E00h,255
|
||||||
|
|
||||||
@ -6622,6 +6646,16 @@ REDIR_3D13:
|
|||||||
JP EXP_FNS
|
JP EXP_FNS
|
||||||
;
|
;
|
||||||
|
|
||||||
|
; [x] 13/06/2025 boot loader from TR-DOS vROM
|
||||||
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
|
PREPARE_TO_vROM_BOOT:
|
||||||
|
LD A,(ZX_VARS.RUN_AUTO_BOOT)
|
||||||
|
AND A ; ¯à¨§ ª ¯®¯ë⪨ § ¯ã᪠boot ª®¬ ¤®© RUN ¡¥§ ¯ à ¬¥â஢
|
||||||
|
JP Z,AUTO_03D9
|
||||||
|
DI
|
||||||
|
JP vROM_BOOT
|
||||||
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
|
|
||||||
;*****************************
|
;*****************************
|
||||||
_mInfoBLOCK #3CFA - $,255
|
_mInfoBLOCK #3CFA - $,255
|
||||||
AUTO_3CFA:
|
AUTO_3CFA:
|
||||||
@ -6725,6 +6759,8 @@ PRINT_CR:
|
|||||||
LD A,#0D ; enter
|
LD A,#0D ; enter
|
||||||
PRINT_SYM:
|
PRINT_SYM:
|
||||||
JP PRINT_RED
|
JP PRINT_RED
|
||||||
|
;=======================================================================
|
||||||
|
|
||||||
|
|
||||||
_mInfoBLOCK #3D8F-$,#FF ; •…<E280A2>
|
_mInfoBLOCK #3D8F-$,#FF ; •…<E280A2>
|
||||||
DW 0000 ; ‡<>€…’
|
DW 0000 ; ‡<>€…’
|
||||||
|
|||||||
@ -19300,7 +19300,7 @@ JMP_EX: PUSH HL
|
|||||||
; -------------------------------
|
; -------------------------------
|
||||||
; THE 'ZX SPECTRUM CHARACTER SET'
|
; THE 'ZX SPECTRUM CHARACTER SET'
|
||||||
; -------------------------------
|
; -------------------------------
|
||||||
|
;; font
|
||||||
;; char-set
|
;; char-set
|
||||||
|
|
||||||
; $20 - Character: ' ' CHR$(32)
|
; $20 - Character: ' ' CHR$(32)
|
||||||
|
|||||||
@ -239,7 +239,7 @@ RESTORE_CURRENT_DIR:
|
|||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
BOOT_PART_2: INCBIN 'build/boot.bin',248
|
BOOT_PART_2: INCBIN 'build/boot.bin',248,181
|
||||||
.SIZE EQU $-BOOT_PART_2
|
.SIZE EQU $-BOOT_PART_2
|
||||||
;
|
;
|
||||||
; vROM_BOOT: DI
|
; vROM_BOOT: DI
|
||||||
|
|||||||
@ -1,663 +0,0 @@
|
|||||||
File_Start DEFL $
|
|
||||||
DISPLAY "===================================================="
|
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
||||||
|
|
||||||
;**********************************
|
|
||||||
; MS-DOS system
|
|
||||||
;**********************************
|
|
||||||
|
|
||||||
MSDOS_FIND_FILE:
|
|
||||||
PUSH DE ; ˆŒŸ ˆ‘ŠŽŒŽƒŽ ”€‰‹€
|
|
||||||
CALL MSDOS_1ST_FL
|
|
||||||
POP DE
|
|
||||||
RET C
|
|
||||||
FIND_LOOP_ALL:
|
|
||||||
CALL MSDOS_KOMP_FL
|
|
||||||
RET Z ; ‚އ‚<E280A1>€’ - ”€‰‹ <20>€‰„…<E2809E> !!
|
|
||||||
;MSDOS_FIND_NEXT:
|
|
||||||
CALL MSDOS_NEXT_FL
|
|
||||||
JR NC,FIND_LOOP_ALL
|
|
||||||
RET
|
|
||||||
|
|
||||||
;***********************************************
|
|
||||||
;
|
|
||||||
; CHECK_BPB:
|
|
||||||
; IN A,(SLOT3)
|
|
||||||
; LD E,A
|
|
||||||
; LD A,SYS_PAGE
|
|
||||||
; DI
|
|
||||||
; OUT (SLOT3),A
|
|
||||||
; ;
|
|
||||||
; LD A,(SYS_PAGE.BPB_PARSED)
|
|
||||||
; ADD A,1
|
|
||||||
; ;
|
|
||||||
; LD A,E
|
|
||||||
; OUT (SLOT3),A
|
|
||||||
; EI
|
|
||||||
; RET
|
|
||||||
;***********************************************
|
|
||||||
MSDOS_1ST_FL:
|
|
||||||
PUSH DE
|
|
||||||
; 15/07/2024
|
|
||||||
;CALL CHECK_BPB
|
|
||||||
CALL READ_BPB
|
|
||||||
;CALL C,READ_BPB
|
|
||||||
;
|
|
||||||
CALL READ_1ST_DIR
|
|
||||||
POP DE
|
|
||||||
MSDOS_TEST_FL:
|
|
||||||
PUSH DE
|
|
||||||
DI
|
|
||||||
IN A,(SLOT3)
|
|
||||||
LD E,A
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (SLOT3),A
|
|
||||||
LD A,E
|
|
||||||
; [x] 07/07/2024 ¯à®¯ã᪠LFN
|
|
||||||
PUSH HL
|
|
||||||
LD DE,#0B ; FAT_DIRECTORY_RECORD.ATTRIBUT
|
|
||||||
ADD HL,DE
|
|
||||||
LD D,(HL)
|
|
||||||
POP HL
|
|
||||||
;
|
|
||||||
LD E,(HL)
|
|
||||||
OUT (SLOT3),A
|
|
||||||
EI
|
|
||||||
; [x] 07/07/2024 ¯à®¯ã᪠LFN
|
|
||||||
LD A,D
|
|
||||||
CP #0F ; FAT_ATTR.LFS_Entry
|
|
||||||
JR NZ,.nxt
|
|
||||||
POP DE
|
|
||||||
JR MSDOS_NEXT_FL
|
|
||||||
;
|
|
||||||
.nxt: LD A,E
|
|
||||||
POP DE
|
|
||||||
AND A
|
|
||||||
SCF
|
|
||||||
RET Z ; ŠŽ<C5A0>…– Š€’€‹Žƒ€
|
|
||||||
CP #E5
|
|
||||||
JR Z,MSDOS_NEXT_FL
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
|
|
||||||
;**********************
|
|
||||||
MSDOS_NEXT_FL:
|
|
||||||
PUSH DE
|
|
||||||
LD DE,32 ; FAT_DIRECTORY_RECORD size
|
|
||||||
ADD HL,DE
|
|
||||||
DI
|
|
||||||
IN A,(SLOT3)
|
|
||||||
LD D,A
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (SLOT3),A
|
|
||||||
LD A,(SYS_PAGE.COUNT_FL)
|
|
||||||
DEC A
|
|
||||||
LD (SYS_PAGE.COUNT_FL),A
|
|
||||||
LD E,A
|
|
||||||
LD A,D
|
|
||||||
OUT (SLOT3),A
|
|
||||||
; RET_PAGE3
|
|
||||||
EI
|
|
||||||
LD A,E
|
|
||||||
POP DE
|
|
||||||
AND A ; ‘<><E28098>Ž‘ CF !!
|
|
||||||
JR NZ,MSDOS_TEST_FL
|
|
||||||
PUSH DE
|
|
||||||
DI
|
|
||||||
IN A,(SLOT3)
|
|
||||||
LD D,A
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (SLOT3),A
|
|
||||||
LD A,(SYS_PAGE.COUNT_SEC)
|
|
||||||
DEC A
|
|
||||||
LD (SYS_PAGE.COUNT_SEC),A
|
|
||||||
LD E,A
|
|
||||||
LD A,D
|
|
||||||
OUT (SLOT3),A
|
|
||||||
; RET_PAGE3
|
|
||||||
EI
|
|
||||||
LD A,E
|
|
||||||
POP DE
|
|
||||||
AND A
|
|
||||||
SCF
|
|
||||||
RET Z
|
|
||||||
PUSH DE
|
|
||||||
CALL READ_NEXT_DIR
|
|
||||||
POP DE
|
|
||||||
LD HL,SYS_PAGE.MS_DIR
|
|
||||||
JR MSDOS_TEST_FL
|
|
||||||
|
|
||||||
;**********************************
|
|
||||||
MSDOS_CAT:
|
|
||||||
PUSH DE
|
|
||||||
CALL AUTO_1D97 ; CLS
|
|
||||||
CALL OPEN_CH2
|
|
||||||
LD A,"\r"
|
|
||||||
RST #10
|
|
||||||
POP DE ; ‘’<E28098>ŽŠ€ <20>Ž‘‹… CAT
|
|
||||||
.loop: LD A,(DE)
|
|
||||||
CP " "
|
|
||||||
;JR NZ,CAT_NO_SPACE
|
|
||||||
INC DE
|
|
||||||
JR Z,.loop
|
|
||||||
DEC DE
|
|
||||||
;CAT_NO_SPACE:
|
|
||||||
CP "\r"
|
|
||||||
JR NZ,CAT_ALL
|
|
||||||
LD DE,CAT_FILES
|
|
||||||
CAT_ALL:
|
|
||||||
; CALL MSDOS_FIND_FILE
|
|
||||||
CALL MSDOS_1ST_FL
|
|
||||||
JR C,CAT_END
|
|
||||||
CAT_LOOP:
|
|
||||||
JR Z,CAT_NO_PRINT
|
|
||||||
CALL MSDOS_KOMP_FL
|
|
||||||
JR NZ,CAT_NO_PRINT
|
|
||||||
PUSH HL
|
|
||||||
PUSH DE
|
|
||||||
CALL OPEN_CH2
|
|
||||||
POP DE
|
|
||||||
POP HL
|
|
||||||
; CALL COPY_NAME_MSD
|
|
||||||
CALL PRINT_MSD_NAME
|
|
||||||
CALL PRINT_MSD_DATS
|
|
||||||
; CALL MSDOS_FIND_NEXT
|
|
||||||
CAT_NO_PRINT:
|
|
||||||
CALL MSDOS_NEXT_FL
|
|
||||||
JR NC,CAT_LOOP
|
|
||||||
CAT_END:
|
|
||||||
CALL OPEN_CH0
|
|
||||||
JP AUTO_03E1
|
|
||||||
|
|
||||||
PRINT_MSD_NAME:
|
|
||||||
PUSH HL
|
|
||||||
PUSH DE
|
|
||||||
LD HL,ZX_VARS.FL_NAME
|
|
||||||
LD A,' '
|
|
||||||
RST #10
|
|
||||||
LD A,' '
|
|
||||||
RST #10
|
|
||||||
;
|
|
||||||
LD B,8
|
|
||||||
.L1: LD A,(HL)
|
|
||||||
;AND #7F ; ¡ £ á ¨¬¥¥¬, ¥á«¨ FAT ¨¬¥ á UTF8
|
|
||||||
RST #10
|
|
||||||
INC HL
|
|
||||||
DJNZ .L1
|
|
||||||
;
|
|
||||||
LD A,' '
|
|
||||||
RST #10
|
|
||||||
;
|
|
||||||
LD B,3
|
|
||||||
.L2: LD A,(HL)
|
|
||||||
;AND #7F ; ¡ £ á ¨¬¥¥¬, ¥á«¨ FAT ¨¬¥ á UTF8
|
|
||||||
RST #10
|
|
||||||
INC HL
|
|
||||||
DJNZ .L2
|
|
||||||
;
|
|
||||||
LD A,6
|
|
||||||
RST #10
|
|
||||||
POP DE
|
|
||||||
POP HL
|
|
||||||
RET
|
|
||||||
|
|
||||||
PRINT_MSD_DATS:
|
|
||||||
PUSH HL
|
|
||||||
PUSH DE
|
|
||||||
LD HL,ZX_VARS.FL_PLACE+1
|
|
||||||
LD A,(HL)
|
|
||||||
DEC HL
|
|
||||||
CALL PRINT_HEX_A
|
|
||||||
LD A,(HL)
|
|
||||||
DEC HL
|
|
||||||
CALL PRINT_HEX_A
|
|
||||||
LD A,(HL)
|
|
||||||
DEC HL
|
|
||||||
CALL PRINT_HEX_A
|
|
||||||
LD A,' '
|
|
||||||
RST 10H
|
|
||||||
LD A,(HL)
|
|
||||||
DEC HL
|
|
||||||
CALL PRINT_HEX_A
|
|
||||||
LD A,(HL)
|
|
||||||
DEC HL
|
|
||||||
CALL PRINT_HEX_A
|
|
||||||
LD A,13
|
|
||||||
RST 10H
|
|
||||||
POP DE
|
|
||||||
POP HL
|
|
||||||
RET
|
|
||||||
;**********************************************
|
|
||||||
CAT_FILES: DB '*.*',13
|
|
||||||
;**********************************************
|
|
||||||
COPY_NAME_MSD:
|
|
||||||
PUSH HL
|
|
||||||
PUSH DE
|
|
||||||
DI
|
|
||||||
IN A,(SLOT3)
|
|
||||||
LD C,A
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (SLOT3),A
|
|
||||||
LD A,C
|
|
||||||
LD DE,ZX_VARS.FL_NAME
|
|
||||||
LD BC,11
|
|
||||||
LDIR
|
|
||||||
|
|
||||||
LD BC,15
|
|
||||||
ADD HL,BC
|
|
||||||
LD BC,5
|
|
||||||
LDIR
|
|
||||||
|
|
||||||
LD L,(HL)
|
|
||||||
OUT (SLOT3),A
|
|
||||||
; RET_PAGE3
|
|
||||||
EI
|
|
||||||
LD A,L
|
|
||||||
POP DE
|
|
||||||
POP HL
|
|
||||||
AND A ; A = 0 „‹Ÿ ”€‰‹€ „‹ˆ<E280B9>މ < 16 Œ¡.
|
|
||||||
RET
|
|
||||||
;*********************************************
|
|
||||||
|
|
||||||
;******************************************************
|
|
||||||
CMD_MSDOS: ; MS-DOS ª®¬ ¤¥à !!
|
|
||||||
;******************************************************
|
|
||||||
CALL SINTAX_RET
|
|
||||||
LD HL,WORDS
|
|
||||||
LOOP_FIND2:
|
|
||||||
LD DE,(ZX_VARS.ADR_DOS_COM)
|
|
||||||
INC DE ; <20>யãáâ¨âì /
|
|
||||||
|
|
||||||
LD A,(HL)
|
|
||||||
AND A
|
|
||||||
JR Z,END_TAB
|
|
||||||
LD B,A
|
|
||||||
INC HL
|
|
||||||
LOOP_FIND:
|
|
||||||
LD A,(DE)
|
|
||||||
AND 223
|
|
||||||
CP (HL)
|
|
||||||
JR NZ,NEXT_WORD
|
|
||||||
INC DE
|
|
||||||
INC HL
|
|
||||||
DJNZ LOOP_FIND
|
|
||||||
LD A,(DE)
|
|
||||||
CP "\r"
|
|
||||||
JR Z,CMD_EXE1
|
|
||||||
CP ' '
|
|
||||||
JR Z,CMD_EXE
|
|
||||||
JR NEXT_WORD2
|
|
||||||
CMD_EXE:
|
|
||||||
INC DE
|
|
||||||
CMD_EXE1:
|
|
||||||
LD A,(HL)
|
|
||||||
INC HL
|
|
||||||
LD H,(HL)
|
|
||||||
LD L,A
|
|
||||||
CALL JP_HL
|
|
||||||
JP AUTO_03E1
|
|
||||||
JP_HL: JP (HL)
|
|
||||||
|
|
||||||
NEXT_WORD:
|
|
||||||
INC HL
|
|
||||||
DJNZ NEXT_WORD
|
|
||||||
NEXT_WORD2:
|
|
||||||
INC HL
|
|
||||||
INC HL
|
|
||||||
JR LOOP_FIND2
|
|
||||||
|
|
||||||
END_TAB:
|
|
||||||
INC DE
|
|
||||||
LD A,(DE)
|
|
||||||
CP ':'
|
|
||||||
DEC DE
|
|
||||||
JR NZ,END_TAB3
|
|
||||||
LD A,(DE)
|
|
||||||
AND 223
|
|
||||||
SUB 'A'
|
|
||||||
JR C,END_TAB3
|
|
||||||
CP 4
|
|
||||||
JR NC,END_TAB2
|
|
||||||
LD (ZX_VARS.OPER_DISK),A
|
|
||||||
LD (ZX_VARS.CONT_DISK),A
|
|
||||||
LD B,A
|
|
||||||
LD A,(ZX_VARS.PDOS_COPY)
|
|
||||||
AND #7C
|
|
||||||
OR B
|
|
||||||
LD (ZX_VARS.PDOS_COPY),A
|
|
||||||
OUT (FDC_93.DrvCTRL),A
|
|
||||||
; [ ] 19/07/2024 ª ¦¤ë© ¤¨áª âमá ᢮© à §¤¥« hdd ¬®¦® § ¬ ¯¨âì
|
|
||||||
LD C,BIOS.GET_DISK_REDIR
|
|
||||||
CALL EXP_FNS
|
|
||||||
CP #40
|
|
||||||
JR C,.exit
|
|
||||||
;
|
|
||||||
AND #0F
|
|
||||||
LD C,BIOS.HDD_PART
|
|
||||||
CALL EXP_FNS
|
|
||||||
;LD HL,MSG_3
|
|
||||||
;CALL C,AUTO_03C3
|
|
||||||
;
|
|
||||||
.exit: JP AUTO_03E1
|
|
||||||
|
|
||||||
END_TAB2:
|
|
||||||
SUB 4
|
|
||||||
CP SYS_PAGE.RAMD_KEYS.NUM
|
|
||||||
JR NC,END_TAB3
|
|
||||||
CALL RAMD_SET1
|
|
||||||
JP AUTO_03E1
|
|
||||||
|
|
||||||
END_TAB3:
|
|
||||||
LD A,0
|
|
||||||
JP LOAD_RMD_XX
|
|
||||||
|
|
||||||
MSD_ERR:
|
|
||||||
LD HL,MSDOS_MSG ; File not found...
|
|
||||||
JP AUTO_03E4
|
|
||||||
|
|
||||||
;************************************
|
|
||||||
|
|
||||||
LOAD_RMD:
|
|
||||||
CALL RAMD_SYM ; ¯®«ãç¨âì ®¬¥à RAM-Disk ¨§ (DE)
|
|
||||||
JP C,MSD_ERR
|
|
||||||
LOAD_RMD_XX:
|
|
||||||
LD (ZX_VARS.MED_START+1),A ; á®åà ¨âì
|
|
||||||
CALL MSDOS_FIND_FILE
|
|
||||||
JP C,MSD_ERR
|
|
||||||
|
|
||||||
CALL RMD_BLKS_FL ; B - ç¨á«® ¡«®ª®¢ , DE - ¡á®«îâë© á¥ªâ®à
|
|
||||||
LD A,(ZX_VARS.MED_START+1)
|
|
||||||
PUSH AF
|
|
||||||
CALL CLEAR_RMD_A ; ®á¢®¡®¤¨âì RAM-Disk A
|
|
||||||
POP AF
|
|
||||||
CALL GET_RMD_A ; ãáâ ®¢¨âì RAM-Disk A à §¬¥à®¬ B
|
|
||||||
|
|
||||||
LD HL,#C000
|
|
||||||
CALL MSDOS_READ_FILE
|
|
||||||
JP AUTO_03E1
|
|
||||||
|
|
||||||
SAVE_RMD:
|
|
||||||
CALL RAMD_SYM ; ¯®«ãç¨âì ®¬¥à RAM-Disk ¨§ (DE)
|
|
||||||
JP C,MSD_ERR
|
|
||||||
LD (ZX_VARS.MED_START+1),A
|
|
||||||
CALL MSDOS_FIND_FILE
|
|
||||||
JP C,MSD_ERR
|
|
||||||
|
|
||||||
CALL RMD_BLKS_FL
|
|
||||||
|
|
||||||
LD A,(ZX_VARS.MED_START+1)
|
|
||||||
CALL TEST_RAMD ; ¯à®¢¥à¨âì «¨ç¨¥ RAM-Disk A à §¬¥à®¬ B
|
|
||||||
JP C,MSD_ERR ; A - ®¬¥à ¯¥à¢®£® ¡«®ª
|
|
||||||
JP Z,MSD_ERR
|
|
||||||
|
|
||||||
LD HL,#C000
|
|
||||||
CALL MSDOS_WRITE_FILE
|
|
||||||
JP AUTO_03E1
|
|
||||||
|
|
||||||
RMD_BLKS_FL:
|
|
||||||
LD A,(ZX_VARS.FL_SIZE+2)
|
|
||||||
PUSH HL
|
|
||||||
LD HL,(ZX_VARS.FL_SIZE)
|
|
||||||
LD B,A
|
|
||||||
AND A
|
|
||||||
RL L
|
|
||||||
RL H
|
|
||||||
RL B
|
|
||||||
AND A
|
|
||||||
RL L
|
|
||||||
RL H
|
|
||||||
RL B
|
|
||||||
LD A,H
|
|
||||||
OR L
|
|
||||||
JR Z,RMD_BLKS_L2
|
|
||||||
INC B
|
|
||||||
RMD_BLKS_L2:
|
|
||||||
POP HL
|
|
||||||
RET ; B - —ˆ‘‹Ž <20>‹ŽŠŽ‚ RAM_DISK
|
|
||||||
|
|
||||||
;****************************************
|
|
||||||
; DE - ˆŒŸ ”€‰‹€ ‘Ž *,?
|
|
||||||
; HL - ˆŒŸ ‚ Š€’€‹Žƒ…
|
|
||||||
MSDOS_KOMP_FL:
|
|
||||||
CALL COPY_NAME_MSD ; <20>…<EFBFBD>…Œ…‘’ˆ’œ ˆŒŸ ‚ Ž<>‹€‘’œ TR-DOS
|
|
||||||
LD A,(ZX_VARS.FL_NAME)
|
|
||||||
AND A
|
|
||||||
JR NZ,KOMP_CONT1
|
|
||||||
LD A,2 ; ŠŽ<C5A0>…– Š€’€‹Žƒ€
|
|
||||||
AND A ; NZ - ˆŒŸ <20>… ‘Ž‚<C5BD>€„€…’
|
|
||||||
RET
|
|
||||||
|
|
||||||
KOMP_CONT1:
|
|
||||||
CP 0A5h
|
|
||||||
JR NZ,KOMP_CONT2
|
|
||||||
LD A,1 ; ‘’…<E28099>’›‰ ”€‰‹ - ˆŒŸ <20>… ‘Ž‚<C5BD>€„€…’
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
|
|
||||||
KOMP_CONT2:
|
|
||||||
PUSH DE
|
|
||||||
PUSH HL
|
|
||||||
LD HL,ZX_VARS.FL_NAME
|
|
||||||
CALL MSDOS_KOMP_ALL
|
|
||||||
POP HL
|
|
||||||
POP DE
|
|
||||||
RET
|
|
||||||
|
|
||||||
MSDOS_KOMP_ALL:
|
|
||||||
LD A,(DE)
|
|
||||||
INC DE
|
|
||||||
CP " "
|
|
||||||
JR Z,MSDOS_KOMP_ALL
|
|
||||||
CP "\r"
|
|
||||||
JR Z,KOMP_ERROR_NAME ; <20>…‚…<E2809A><E280A6>Ž… ˆŒŸ
|
|
||||||
DEC DE
|
|
||||||
|
|
||||||
LD B,8
|
|
||||||
CALL KOMP_TX
|
|
||||||
RET NZ
|
|
||||||
|
|
||||||
LD A,(DE)
|
|
||||||
CP "."
|
|
||||||
JR Z,KOMP_POINT
|
|
||||||
CP "\r"
|
|
||||||
JR Z,KOMP_SPACING3
|
|
||||||
CP " "
|
|
||||||
JR Z,KOMP_SPACING3
|
|
||||||
KOMP_ERROR_NAME: ; <20>…‚…<E2809A><E280A6>Ž… ˆŒŸ
|
|
||||||
LD A,1
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
|
|
||||||
KOMP_POINT:
|
|
||||||
INC DE
|
|
||||||
|
|
||||||
LD B,3
|
|
||||||
CALL KOMP_TX
|
|
||||||
RET NZ
|
|
||||||
LD A,(DE)
|
|
||||||
CP 13
|
|
||||||
RET Z
|
|
||||||
CP 20H
|
|
||||||
RET Z
|
|
||||||
JR KOMP_ERROR_NAME
|
|
||||||
|
|
||||||
;****************************************************
|
|
||||||
KOMP_TX:
|
|
||||||
LD A,(DE)
|
|
||||||
CP "\r"
|
|
||||||
JR Z,KOMP_SPACING
|
|
||||||
CP " "
|
|
||||||
JR Z,KOMP_SPACING
|
|
||||||
CP "."
|
|
||||||
JR Z,KOMP_SPACING
|
|
||||||
CP "?"
|
|
||||||
JR Z,KOMP_EX_OK
|
|
||||||
CP "*"
|
|
||||||
JR Z,KOMP_EX_OK2
|
|
||||||
CP "a"
|
|
||||||
JR C,KOMP_EXEC
|
|
||||||
CP "z"+1
|
|
||||||
JR NC,KOMP_EXEC
|
|
||||||
AND %1101'1111
|
|
||||||
KOMP_EXEC:
|
|
||||||
CP (HL)
|
|
||||||
RET NZ ; ¥â ᮢ¯ ¤¥¨ï
|
|
||||||
KOMP_EX_OK:
|
|
||||||
INC DE
|
|
||||||
KOMP_EX_OK2:
|
|
||||||
INC HL
|
|
||||||
DJNZ KOMP_TX
|
|
||||||
CP '*'
|
|
||||||
JR NZ,KOMP_NO_STAR1
|
|
||||||
INC DE
|
|
||||||
KOMP_NO_STAR1:
|
|
||||||
XOR A
|
|
||||||
RET
|
|
||||||
|
|
||||||
KOMP_SPACING3:
|
|
||||||
LD B,3
|
|
||||||
KOMP_SPACING:
|
|
||||||
LD A,20H
|
|
||||||
KOMP_L2:
|
|
||||||
CP (HL)
|
|
||||||
INC HL
|
|
||||||
RET NZ
|
|
||||||
DJNZ KOMP_L2
|
|
||||||
RET
|
|
||||||
|
|
||||||
;************************************************
|
|
||||||
|
|
||||||
CALC_CLAST: ; HL - áâ àâ®¢ë© ª« áâ¥à
|
|
||||||
PUSH BC
|
|
||||||
PUSH HL
|
|
||||||
DEC HL
|
|
||||||
DEC HL
|
|
||||||
DI
|
|
||||||
IN A,(SLOT3)
|
|
||||||
EX AF,AF'
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (SLOT3),A
|
|
||||||
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
|
|
||||||
|
|
||||||
EX DE,HL
|
|
||||||
LD BC,0
|
|
||||||
LD H,B
|
|
||||||
LD L,B
|
|
||||||
LD HX,B
|
|
||||||
LD LX,B
|
|
||||||
|
|
||||||
CALC_CL_LP:
|
|
||||||
ADD IX,DE
|
|
||||||
ADC HL,BC
|
|
||||||
|
|
||||||
DEC A
|
|
||||||
JR NZ,CALC_CL_LP
|
|
||||||
|
|
||||||
LD DE,(SYS_PAGE.MSD_DAT_SEC)
|
|
||||||
LD BC,(SYS_PAGE.MSD_DAT_SEC2)
|
|
||||||
|
|
||||||
ADD IX,DE
|
|
||||||
ADC HL,BC ; HL,IX - ‘Œ…™…<E284A2>ˆ… Š‹€‘’…<E28099>€ Ž’ <20>€—€‹€ „€<E2809E><E282AC>›•
|
|
||||||
|
|
||||||
EX AF,AF'
|
|
||||||
OUT (SLOT3),A
|
|
||||||
|
|
||||||
PUSH IX
|
|
||||||
EX (SP),HL
|
|
||||||
POP IX
|
|
||||||
EX DE,HL
|
|
||||||
|
|
||||||
EI
|
|
||||||
POP HL
|
|
||||||
POP BC
|
|
||||||
RET
|
|
||||||
|
|
||||||
|
|
||||||
HD_TX: DC ' - HDD error'
|
|
||||||
;HD_TX: DC 'HDD error #'
|
|
||||||
HD_TX2: DC 'HDD not found'
|
|
||||||
MSG_3: DC '*ERROR*'
|
|
||||||
MSDOS_MSG: DC 'File not found'
|
|
||||||
NO_MEMORY: DC 'Out of memory'
|
|
||||||
;NO_MEMORY: DC 'No RAM-Disk MEM'
|
|
||||||
|
|
||||||
WORDS:
|
|
||||||
DB 3,'CAT' ; ª â «®£ MS-DOS
|
|
||||||
DW MSDOS_CAT
|
|
||||||
DB 3,'DIR' ; ª â «®£ MS-DOS
|
|
||||||
DW MSDOS_CAT
|
|
||||||
DB 3,'HDD' ; ¯®¤ª«îç¨âì HDD
|
|
||||||
DW HDD_SET
|
|
||||||
DB 3,'FDD' ; ¯®¤ª«îç¨âì FDD
|
|
||||||
DW FDD_SET
|
|
||||||
DB 3,'RMD' ; ¯®¤ª«îç¨âì RMD
|
|
||||||
DW RAMD_SET
|
|
||||||
DB 3,'HDT' ; â¥áâ HDD
|
|
||||||
DW HDD_PROG
|
|
||||||
DB 2,'RD' ; â¥áâ RAM-Disk space
|
|
||||||
DW RAMD_FAT_PROG
|
|
||||||
DB 4,'SAVE' ; á®åà ¨âì RAM-Disk
|
|
||||||
DW SAVE_RMD
|
|
||||||
DB 4,'LOAD' ; § £à㧨âì RAM-Disk
|
|
||||||
DW LOAD_RMD
|
|
||||||
DB 4,'TBON' ; ¢ª«îç¨âì âãà¡®
|
|
||||||
DW TB_ONOFF
|
|
||||||
DB 5,'TBOFF' ; ¢ëª«îç¨âì âãà¡®
|
|
||||||
DW TB_ONOFF
|
|
||||||
DB 4,'INIT' ; २¨§¨ «¨§ æ¨ï
|
|
||||||
DW INIT_RMD
|
|
||||||
DB 5,'CLEAR' ; ®ç¨áâ¨âì RAM-Disk
|
|
||||||
DW CLEAR_RAMD_X
|
|
||||||
DB 8,"SPRINTER"
|
|
||||||
DW SPR_1
|
|
||||||
DB 2,"AY"
|
|
||||||
DW AY8910
|
|
||||||
DB 0
|
|
||||||
|
|
||||||
;SAVE_AUTOEXEC:
|
|
||||||
; LD C,0FEH
|
|
||||||
; CALL EXP_FNS
|
|
||||||
; RET
|
|
||||||
AY8910:
|
|
||||||
LD A,#EA
|
|
||||||
LD C,#F3 ;!HARDCODE BIOS.SPRINTER_ALL
|
|
||||||
CALL EXP_FNS
|
|
||||||
;!TEST 06/01/2024 á®åà 塞 á®áâ®ï¨¥ ¯à¥àë¢ ¨© § 祬-â®
|
|
||||||
;EI
|
|
||||||
;
|
|
||||||
CALL AUTO_1D97
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
|
|
||||||
SPR_1: LD A,(DE)
|
|
||||||
INC DE
|
|
||||||
CP " "
|
|
||||||
JR Z,SPR_1
|
|
||||||
CP "1"
|
|
||||||
LD C,BIOS.RST_CONF.SP97_1
|
|
||||||
JR Z,SP_1
|
|
||||||
CP "2"
|
|
||||||
SCF
|
|
||||||
RET NZ
|
|
||||||
LD C,BIOS.RST_CONF.SP97_2
|
|
||||||
SP_1: LD A,(DE)
|
|
||||||
CP " "+1
|
|
||||||
CCF
|
|
||||||
RET C
|
|
||||||
CALL EXP_FNS
|
|
||||||
CALL AUTO_1D97
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
|
|
||||||
|
|
||||||
;****************************************************
|
|
||||||
;*****************************************
|
|
||||||
; ERRORS
|
|
||||||
;*****************************************
|
|
||||||
; 0 - ƒ‹€‚<E282AC>€Ÿ <20><>Ž‚…<E2809A>Š€ <20><>Žƒ<C5BD>€ŒŒ›
|
|
||||||
; 1 - <20>…‚…<E2809A><E280A6>›‰ ”Ž<E2809D>Œ€’ ˆŒ…<C592>ˆ
|
|
||||||
; 2 - ŠŽ<C5A0>…– Š€’€‹Žƒ€
|
|
||||||
;
|
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
||||||
DISPLAY "TR_MSD_2.ASZ size: ",/A,$-File_Start
|
|
||||||
DISPLAY "===================================================="
|
|
||||||
@ -565,7 +565,664 @@ GET_FL_L2:
|
|||||||
RET Z
|
RET Z
|
||||||
INC BC
|
INC BC
|
||||||
RET
|
RET
|
||||||
;***********************************************************************
|
|
||||||
|
;**********************************
|
||||||
|
; MS-DOS system
|
||||||
|
;**********************************
|
||||||
|
|
||||||
|
MSDOS_FIND_FILE:
|
||||||
|
PUSH DE ; ˆŒŸ ˆ‘ŠŽŒŽƒŽ ”€‰‹€
|
||||||
|
CALL MSDOS_1ST_FL
|
||||||
|
POP DE
|
||||||
|
RET C
|
||||||
|
FIND_LOOP_ALL:
|
||||||
|
CALL MSDOS_KOMP_FL
|
||||||
|
RET Z ; ‚އ‚<E280A1>€’ - ”€‰‹ <20>€‰„…<E2809E> !!
|
||||||
|
;MSDOS_FIND_NEXT:
|
||||||
|
CALL MSDOS_NEXT_FL
|
||||||
|
JR NC,FIND_LOOP_ALL
|
||||||
|
RET
|
||||||
|
|
||||||
|
;***********************************************
|
||||||
|
;
|
||||||
|
; CHECK_BPB:
|
||||||
|
; IN A,(SLOT3)
|
||||||
|
; LD E,A
|
||||||
|
; LD A,SYS_PAGE
|
||||||
|
; DI
|
||||||
|
; OUT (SLOT3),A
|
||||||
|
; ;
|
||||||
|
; LD A,(SYS_PAGE.BPB_PARSED)
|
||||||
|
; ADD A,1
|
||||||
|
; ;
|
||||||
|
; LD A,E
|
||||||
|
; OUT (SLOT3),A
|
||||||
|
; EI
|
||||||
|
; RET
|
||||||
|
;***********************************************
|
||||||
|
MSDOS_1ST_FL:
|
||||||
|
PUSH DE
|
||||||
|
; 15/07/2024
|
||||||
|
;CALL CHECK_BPB
|
||||||
|
CALL READ_BPB
|
||||||
|
;CALL C,READ_BPB
|
||||||
|
;
|
||||||
|
CALL READ_1ST_DIR
|
||||||
|
POP DE
|
||||||
|
MSDOS_TEST_FL:
|
||||||
|
PUSH DE
|
||||||
|
DI
|
||||||
|
IN A,(SLOT3)
|
||||||
|
LD E,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,E
|
||||||
|
; [x] 07/07/2024 ¯à®¯ã᪠LFN
|
||||||
|
PUSH HL
|
||||||
|
LD DE,#0B ; FAT_DIRECTORY_RECORD.ATTRIBUT
|
||||||
|
ADD HL,DE
|
||||||
|
LD D,(HL)
|
||||||
|
POP HL
|
||||||
|
;
|
||||||
|
LD E,(HL)
|
||||||
|
OUT (SLOT3),A
|
||||||
|
EI
|
||||||
|
; [x] 07/07/2024 ¯à®¯ã᪠LFN
|
||||||
|
LD A,D
|
||||||
|
CP #0F ; FAT_ATTR.LFS_Entry
|
||||||
|
JR NZ,.nxt
|
||||||
|
POP DE
|
||||||
|
JR MSDOS_NEXT_FL
|
||||||
|
;
|
||||||
|
.nxt: LD A,E
|
||||||
|
POP DE
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
|
RET Z ; ŠŽ<C5A0>…– Š€’€‹Žƒ€
|
||||||
|
CP #E5
|
||||||
|
JR Z,MSDOS_NEXT_FL
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
;**********************
|
||||||
|
MSDOS_NEXT_FL:
|
||||||
|
PUSH DE
|
||||||
|
LD DE,32 ; FAT_DIRECTORY_RECORD size
|
||||||
|
ADD HL,DE
|
||||||
|
DI
|
||||||
|
IN A,(SLOT3)
|
||||||
|
LD D,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,(SYS_PAGE.COUNT_FL)
|
||||||
|
DEC A
|
||||||
|
LD (SYS_PAGE.COUNT_FL),A
|
||||||
|
LD E,A
|
||||||
|
LD A,D
|
||||||
|
OUT (SLOT3),A
|
||||||
|
; RET_PAGE3
|
||||||
|
EI
|
||||||
|
LD A,E
|
||||||
|
POP DE
|
||||||
|
AND A ; ‘<><E28098>Ž‘ CF !!
|
||||||
|
JR NZ,MSDOS_TEST_FL
|
||||||
|
PUSH DE
|
||||||
|
DI
|
||||||
|
IN A,(SLOT3)
|
||||||
|
LD D,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,(SYS_PAGE.COUNT_SEC)
|
||||||
|
DEC A
|
||||||
|
LD (SYS_PAGE.COUNT_SEC),A
|
||||||
|
LD E,A
|
||||||
|
LD A,D
|
||||||
|
OUT (SLOT3),A
|
||||||
|
; RET_PAGE3
|
||||||
|
EI
|
||||||
|
LD A,E
|
||||||
|
POP DE
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
|
RET Z
|
||||||
|
PUSH DE
|
||||||
|
CALL READ_NEXT_DIR
|
||||||
|
POP DE
|
||||||
|
LD HL,SYS_PAGE.MS_DIR
|
||||||
|
JR MSDOS_TEST_FL
|
||||||
|
|
||||||
|
;**********************************
|
||||||
|
MSDOS_CAT:
|
||||||
|
PUSH DE
|
||||||
|
CALL AUTO_1D97 ; CLS
|
||||||
|
CALL OPEN_CH2
|
||||||
|
LD A,"\r"
|
||||||
|
RST #10
|
||||||
|
POP DE ; ‘’<E28098>ŽŠ€ <20>Ž‘‹… CAT
|
||||||
|
.loop: LD A,(DE)
|
||||||
|
CP " "
|
||||||
|
;JR NZ,CAT_NO_SPACE
|
||||||
|
INC DE
|
||||||
|
JR Z,.loop
|
||||||
|
DEC DE
|
||||||
|
;CAT_NO_SPACE:
|
||||||
|
CP "\r"
|
||||||
|
JR NZ,CAT_ALL
|
||||||
|
LD DE,CAT_FILES
|
||||||
|
CAT_ALL:
|
||||||
|
; CALL MSDOS_FIND_FILE
|
||||||
|
CALL MSDOS_1ST_FL
|
||||||
|
JR C,CAT_END
|
||||||
|
CAT_LOOP:
|
||||||
|
JR Z,CAT_NO_PRINT
|
||||||
|
CALL MSDOS_KOMP_FL
|
||||||
|
JR NZ,CAT_NO_PRINT
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
CALL OPEN_CH2
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
; CALL COPY_NAME_MSD
|
||||||
|
CALL PRINT_MSD_NAME
|
||||||
|
CALL PRINT_MSD_DATS
|
||||||
|
; CALL MSDOS_FIND_NEXT
|
||||||
|
CAT_NO_PRINT:
|
||||||
|
CALL MSDOS_NEXT_FL
|
||||||
|
JR NC,CAT_LOOP
|
||||||
|
CAT_END:
|
||||||
|
CALL OPEN_CH0
|
||||||
|
JP AUTO_03E1
|
||||||
|
|
||||||
|
PRINT_MSD_NAME:
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
LD HL,ZX_VARS.FL_NAME
|
||||||
|
LD A,' '
|
||||||
|
RST #10
|
||||||
|
LD A,' '
|
||||||
|
RST #10
|
||||||
|
;
|
||||||
|
LD B,8
|
||||||
|
.L1: LD A,(HL)
|
||||||
|
;AND #7F ; ¡ £ á ¨¬¥¥¬, ¥á«¨ FAT ¨¬¥ á UTF8
|
||||||
|
RST #10
|
||||||
|
INC HL
|
||||||
|
DJNZ .L1
|
||||||
|
;
|
||||||
|
LD A,' '
|
||||||
|
RST #10
|
||||||
|
;
|
||||||
|
LD B,3
|
||||||
|
.L2: LD A,(HL)
|
||||||
|
;AND #7F ; ¡ £ á ¨¬¥¥¬, ¥á«¨ FAT ¨¬¥ á UTF8
|
||||||
|
RST #10
|
||||||
|
INC HL
|
||||||
|
DJNZ .L2
|
||||||
|
;
|
||||||
|
LD A,6
|
||||||
|
RST #10
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
PRINT_MSD_DATS:
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
LD HL,ZX_VARS.FL_PLACE+1
|
||||||
|
LD A,(HL)
|
||||||
|
DEC HL
|
||||||
|
CALL PRINT_HEX_A
|
||||||
|
LD A,(HL)
|
||||||
|
DEC HL
|
||||||
|
CALL PRINT_HEX_A
|
||||||
|
LD A,(HL)
|
||||||
|
DEC HL
|
||||||
|
CALL PRINT_HEX_A
|
||||||
|
LD A,' '
|
||||||
|
RST 10H
|
||||||
|
LD A,(HL)
|
||||||
|
DEC HL
|
||||||
|
CALL PRINT_HEX_A
|
||||||
|
LD A,(HL)
|
||||||
|
DEC HL
|
||||||
|
CALL PRINT_HEX_A
|
||||||
|
LD A,13
|
||||||
|
RST 10H
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
;**********************************************
|
||||||
|
CAT_FILES: DB '*.*',13
|
||||||
|
;**********************************************
|
||||||
|
COPY_NAME_MSD:
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
DI
|
||||||
|
IN A,(SLOT3)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,C
|
||||||
|
LD DE,ZX_VARS.FL_NAME
|
||||||
|
LD BC,11
|
||||||
|
LDIR
|
||||||
|
|
||||||
|
LD BC,15
|
||||||
|
ADD HL,BC
|
||||||
|
LD BC,5
|
||||||
|
LDIR
|
||||||
|
|
||||||
|
LD L,(HL)
|
||||||
|
OUT (SLOT3),A
|
||||||
|
; RET_PAGE3
|
||||||
|
EI
|
||||||
|
LD A,L
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
AND A ; A = 0 „‹Ÿ ”€‰‹€ „‹ˆ<E280B9>މ < 16 Œ¡.
|
||||||
|
RET
|
||||||
|
;*********************************************
|
||||||
|
|
||||||
|
;******************************************************
|
||||||
|
CMD_MSDOS: ; MS-DOS ª®¬ ¤¥à !!
|
||||||
|
;******************************************************
|
||||||
|
CALL SINTAX_RET
|
||||||
|
LD HL,WORDS
|
||||||
|
LOOP_FIND2:
|
||||||
|
LD DE,(ZX_VARS.ADR_DOS_COM)
|
||||||
|
INC DE ; <20>யãáâ¨âì /
|
||||||
|
|
||||||
|
LD A,(HL)
|
||||||
|
AND A
|
||||||
|
JR Z,END_TAB
|
||||||
|
LD B,A
|
||||||
|
INC HL
|
||||||
|
LOOP_FIND:
|
||||||
|
LD A,(DE)
|
||||||
|
AND 223
|
||||||
|
CP (HL)
|
||||||
|
JR NZ,NEXT_WORD
|
||||||
|
INC DE
|
||||||
|
INC HL
|
||||||
|
DJNZ LOOP_FIND
|
||||||
|
LD A,(DE)
|
||||||
|
CP "\r"
|
||||||
|
JR Z,CMD_EXE1
|
||||||
|
CP ' '
|
||||||
|
JR Z,CMD_EXE
|
||||||
|
JR NEXT_WORD2
|
||||||
|
CMD_EXE:
|
||||||
|
INC DE
|
||||||
|
CMD_EXE1:
|
||||||
|
LD A,(HL)
|
||||||
|
INC HL
|
||||||
|
LD H,(HL)
|
||||||
|
LD L,A
|
||||||
|
CALL JP_HL
|
||||||
|
JP AUTO_03E1
|
||||||
|
JP_HL: JP (HL)
|
||||||
|
|
||||||
|
NEXT_WORD:
|
||||||
|
INC HL
|
||||||
|
DJNZ NEXT_WORD
|
||||||
|
NEXT_WORD2:
|
||||||
|
INC HL
|
||||||
|
INC HL
|
||||||
|
JR LOOP_FIND2
|
||||||
|
|
||||||
|
END_TAB:
|
||||||
|
INC DE
|
||||||
|
LD A,(DE)
|
||||||
|
CP ':'
|
||||||
|
DEC DE
|
||||||
|
JR NZ,END_TAB3
|
||||||
|
LD A,(DE)
|
||||||
|
AND 223
|
||||||
|
SUB 'A'
|
||||||
|
JR C,END_TAB3
|
||||||
|
CP 4
|
||||||
|
JR NC,END_TAB2
|
||||||
|
LD (ZX_VARS.OPER_DISK),A
|
||||||
|
LD (ZX_VARS.CONT_DISK),A
|
||||||
|
LD B,A
|
||||||
|
LD A,(ZX_VARS.PDOS_COPY)
|
||||||
|
AND #7C
|
||||||
|
OR B
|
||||||
|
LD (ZX_VARS.PDOS_COPY),A
|
||||||
|
OUT (FDC_93.DrvCTRL),A
|
||||||
|
; [ ] 19/07/2024 ª ¦¤ë© ¤¨áª âमá ᢮© à §¤¥« hdd ¬®¦® § ¬ ¯¨âì
|
||||||
|
LD C,BIOS.GET_DISK_REDIR
|
||||||
|
CALL EXP_FNS
|
||||||
|
CP #40
|
||||||
|
JR C,.exit
|
||||||
|
;
|
||||||
|
AND #0F
|
||||||
|
LD C,BIOS.HDD_PART
|
||||||
|
CALL EXP_FNS
|
||||||
|
;LD HL,MSG_3
|
||||||
|
;CALL C,AUTO_03C3
|
||||||
|
;
|
||||||
|
.exit: JP AUTO_03E1
|
||||||
|
|
||||||
|
END_TAB2:
|
||||||
|
SUB 4
|
||||||
|
CP SYS_PAGE.RAMD_KEYS.NUM
|
||||||
|
JR NC,END_TAB3
|
||||||
|
CALL RAMD_SET1
|
||||||
|
JP AUTO_03E1
|
||||||
|
|
||||||
|
END_TAB3:
|
||||||
|
LD A,0
|
||||||
|
JP LOAD_RMD_XX
|
||||||
|
|
||||||
|
MSD_ERR:
|
||||||
|
LD HL,MSDOS_MSG ; File not found...
|
||||||
|
JP AUTO_03E4
|
||||||
|
|
||||||
|
;************************************
|
||||||
|
|
||||||
|
LOAD_RMD:
|
||||||
|
CALL RAMD_SYM ; ¯®«ãç¨âì ®¬¥à RAM-Disk ¨§ (DE)
|
||||||
|
JP C,MSD_ERR
|
||||||
|
LOAD_RMD_XX:
|
||||||
|
LD (ZX_VARS.MED_START+1),A ; á®åà ¨âì
|
||||||
|
CALL MSDOS_FIND_FILE
|
||||||
|
JP C,MSD_ERR
|
||||||
|
|
||||||
|
CALL RMD_BLKS_FL ; B - ç¨á«® ¡«®ª®¢ , DE - ¡á®«îâë© á¥ªâ®à
|
||||||
|
LD A,(ZX_VARS.MED_START+1)
|
||||||
|
PUSH AF
|
||||||
|
CALL CLEAR_RMD_A ; ®á¢®¡®¤¨âì RAM-Disk A
|
||||||
|
POP AF
|
||||||
|
CALL GET_RMD_A ; ãáâ ®¢¨âì RAM-Disk A à §¬¥à®¬ B
|
||||||
|
|
||||||
|
LD HL,#C000
|
||||||
|
CALL MSDOS_READ_FILE
|
||||||
|
JP AUTO_03E1
|
||||||
|
|
||||||
|
SAVE_RMD:
|
||||||
|
CALL RAMD_SYM ; ¯®«ãç¨âì ®¬¥à RAM-Disk ¨§ (DE)
|
||||||
|
JP C,MSD_ERR
|
||||||
|
LD (ZX_VARS.MED_START+1),A
|
||||||
|
CALL MSDOS_FIND_FILE
|
||||||
|
JP C,MSD_ERR
|
||||||
|
|
||||||
|
CALL RMD_BLKS_FL
|
||||||
|
|
||||||
|
LD A,(ZX_VARS.MED_START+1)
|
||||||
|
CALL TEST_RAMD ; ¯à®¢¥à¨âì «¨ç¨¥ RAM-Disk A à §¬¥à®¬ B
|
||||||
|
JP C,MSD_ERR ; A - ®¬¥à ¯¥à¢®£® ¡«®ª
|
||||||
|
JP Z,MSD_ERR
|
||||||
|
|
||||||
|
LD HL,#C000
|
||||||
|
CALL MSDOS_WRITE_FILE
|
||||||
|
JP AUTO_03E1
|
||||||
|
|
||||||
|
RMD_BLKS_FL:
|
||||||
|
LD A,(ZX_VARS.FL_SIZE+2)
|
||||||
|
PUSH HL
|
||||||
|
LD HL,(ZX_VARS.FL_SIZE)
|
||||||
|
LD B,A
|
||||||
|
AND A
|
||||||
|
RL L
|
||||||
|
RL H
|
||||||
|
RL B
|
||||||
|
AND A
|
||||||
|
RL L
|
||||||
|
RL H
|
||||||
|
RL B
|
||||||
|
LD A,H
|
||||||
|
OR L
|
||||||
|
JR Z,RMD_BLKS_L2
|
||||||
|
INC B
|
||||||
|
RMD_BLKS_L2:
|
||||||
|
POP HL
|
||||||
|
RET ; B - —ˆ‘‹Ž <20>‹ŽŠŽ‚ RAM_DISK
|
||||||
|
|
||||||
|
;****************************************
|
||||||
|
; DE - ˆŒŸ ”€‰‹€ ‘Ž *,?
|
||||||
|
; HL - ˆŒŸ ‚ Š€’€‹Žƒ…
|
||||||
|
MSDOS_KOMP_FL:
|
||||||
|
CALL COPY_NAME_MSD ; <20>…<EFBFBD>…Œ…‘’ˆ’œ ˆŒŸ ‚ Ž<>‹€‘’œ TR-DOS
|
||||||
|
LD A,(ZX_VARS.FL_NAME)
|
||||||
|
AND A
|
||||||
|
JR NZ,KOMP_CONT1
|
||||||
|
LD A,2 ; ŠŽ<C5A0>…– Š€’€‹Žƒ€
|
||||||
|
AND A ; NZ - ˆŒŸ <20>… ‘Ž‚<C5BD>€„€…’
|
||||||
|
RET
|
||||||
|
|
||||||
|
KOMP_CONT1:
|
||||||
|
CP 0A5h
|
||||||
|
JR NZ,KOMP_CONT2
|
||||||
|
LD A,1 ; ‘’…<E28099>’›‰ ”€‰‹ - ˆŒŸ <20>… ‘Ž‚<C5BD>€„€…’
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
KOMP_CONT2:
|
||||||
|
PUSH DE
|
||||||
|
PUSH HL
|
||||||
|
LD HL,ZX_VARS.FL_NAME
|
||||||
|
CALL MSDOS_KOMP_ALL
|
||||||
|
POP HL
|
||||||
|
POP DE
|
||||||
|
RET
|
||||||
|
|
||||||
|
MSDOS_KOMP_ALL:
|
||||||
|
LD A,(DE)
|
||||||
|
INC DE
|
||||||
|
CP " "
|
||||||
|
JR Z,MSDOS_KOMP_ALL
|
||||||
|
CP "\r"
|
||||||
|
JR Z,KOMP_ERROR_NAME ; <20>…‚…<E2809A><E280A6>Ž… ˆŒŸ
|
||||||
|
DEC DE
|
||||||
|
|
||||||
|
LD B,8
|
||||||
|
CALL KOMP_TX
|
||||||
|
RET NZ
|
||||||
|
|
||||||
|
LD A,(DE)
|
||||||
|
CP "."
|
||||||
|
JR Z,KOMP_POINT
|
||||||
|
CP "\r"
|
||||||
|
JR Z,KOMP_SPACING3
|
||||||
|
CP " "
|
||||||
|
JR Z,KOMP_SPACING3
|
||||||
|
KOMP_ERROR_NAME: ; <20>…‚…<E2809A><E280A6>Ž… ˆŒŸ
|
||||||
|
LD A,1
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
KOMP_POINT:
|
||||||
|
INC DE
|
||||||
|
|
||||||
|
LD B,3
|
||||||
|
CALL KOMP_TX
|
||||||
|
RET NZ
|
||||||
|
LD A,(DE)
|
||||||
|
CP 13
|
||||||
|
RET Z
|
||||||
|
CP 20H
|
||||||
|
RET Z
|
||||||
|
JR KOMP_ERROR_NAME
|
||||||
|
|
||||||
|
;****************************************************
|
||||||
|
KOMP_TX:
|
||||||
|
LD A,(DE)
|
||||||
|
CP "\r"
|
||||||
|
JR Z,KOMP_SPACING
|
||||||
|
CP " "
|
||||||
|
JR Z,KOMP_SPACING
|
||||||
|
CP "."
|
||||||
|
JR Z,KOMP_SPACING
|
||||||
|
CP "?"
|
||||||
|
JR Z,KOMP_EX_OK
|
||||||
|
CP "*"
|
||||||
|
JR Z,KOMP_EX_OK2
|
||||||
|
CP "a"
|
||||||
|
JR C,KOMP_EXEC
|
||||||
|
CP "z"+1
|
||||||
|
JR NC,KOMP_EXEC
|
||||||
|
AND %1101'1111
|
||||||
|
KOMP_EXEC:
|
||||||
|
CP (HL)
|
||||||
|
RET NZ ; ¥â ᮢ¯ ¤¥¨ï
|
||||||
|
KOMP_EX_OK:
|
||||||
|
INC DE
|
||||||
|
KOMP_EX_OK2:
|
||||||
|
INC HL
|
||||||
|
DJNZ KOMP_TX
|
||||||
|
CP '*'
|
||||||
|
JR NZ,KOMP_NO_STAR1
|
||||||
|
INC DE
|
||||||
|
KOMP_NO_STAR1:
|
||||||
|
XOR A
|
||||||
|
RET
|
||||||
|
|
||||||
|
KOMP_SPACING3:
|
||||||
|
LD B,3
|
||||||
|
KOMP_SPACING:
|
||||||
|
LD A,20H
|
||||||
|
KOMP_L2:
|
||||||
|
CP (HL)
|
||||||
|
INC HL
|
||||||
|
RET NZ
|
||||||
|
DJNZ KOMP_L2
|
||||||
|
RET
|
||||||
|
|
||||||
|
;************************************************
|
||||||
|
|
||||||
|
CALC_CLAST: ; HL - áâ àâ®¢ë© ª« áâ¥à
|
||||||
|
PUSH BC
|
||||||
|
PUSH HL
|
||||||
|
DEC HL
|
||||||
|
DEC HL
|
||||||
|
DI
|
||||||
|
IN A,(SLOT3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
|
||||||
|
|
||||||
|
EX DE,HL
|
||||||
|
LD BC,0
|
||||||
|
LD H,B
|
||||||
|
LD L,B
|
||||||
|
LD HX,B
|
||||||
|
LD LX,B
|
||||||
|
|
||||||
|
CALC_CL_LP:
|
||||||
|
ADD IX,DE
|
||||||
|
ADC HL,BC
|
||||||
|
|
||||||
|
DEC A
|
||||||
|
JR NZ,CALC_CL_LP
|
||||||
|
|
||||||
|
LD DE,(SYS_PAGE.MSD_DAT_SEC)
|
||||||
|
LD BC,(SYS_PAGE.MSD_DAT_SEC2)
|
||||||
|
|
||||||
|
ADD IX,DE
|
||||||
|
ADC HL,BC ; HL,IX - ‘Œ…™…<E284A2>ˆ… Š‹€‘’…<E28099>€ Ž’ <20>€—€‹€ „€<E2809E><E282AC>›•
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
|
||||||
|
PUSH IX
|
||||||
|
EX (SP),HL
|
||||||
|
POP IX
|
||||||
|
EX DE,HL
|
||||||
|
|
||||||
|
EI
|
||||||
|
POP HL
|
||||||
|
POP BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
HD_TX: DC ' - HDD error'
|
||||||
|
;HD_TX: DC 'HDD error #'
|
||||||
|
HD_TX2: DC 'HDD not found'
|
||||||
|
MSG_3: DC '*ERROR*'
|
||||||
|
MSDOS_MSG: DC 'File not found'
|
||||||
|
NO_MEMORY: DC 'Out of memory'
|
||||||
|
;NO_MEMORY: DC 'No RAM-Disk MEM'
|
||||||
|
|
||||||
|
WORDS:
|
||||||
|
DB 3,'CAT' ; ª â «®£ MS-DOS
|
||||||
|
DW MSDOS_CAT
|
||||||
|
DB 3,'DIR' ; ª â «®£ MS-DOS
|
||||||
|
DW MSDOS_CAT
|
||||||
|
DB 3,'HDD' ; ¯®¤ª«îç¨âì HDD
|
||||||
|
DW HDD_SET
|
||||||
|
DB 3,'FDD' ; ¯®¤ª«îç¨âì FDD
|
||||||
|
DW FDD_SET
|
||||||
|
DB 3,'RMD' ; ¯®¤ª«îç¨âì RMD
|
||||||
|
DW RAMD_SET
|
||||||
|
DB 3,'HDT' ; â¥áâ HDD
|
||||||
|
DW HDD_PROG
|
||||||
|
DB 2,'RD' ; â¥áâ RAM-Disk space
|
||||||
|
DW RAMD_FAT_PROG
|
||||||
|
DB 4,'SAVE' ; á®åà ¨âì RAM-Disk
|
||||||
|
DW SAVE_RMD
|
||||||
|
DB 4,'LOAD' ; § £à㧨âì RAM-Disk
|
||||||
|
DW LOAD_RMD
|
||||||
|
DB 4,'TBON' ; ¢ª«îç¨âì âãà¡®
|
||||||
|
DW TB_ONOFF
|
||||||
|
DB 5,'TBOFF' ; ¢ëª«îç¨âì âãà¡®
|
||||||
|
DW TB_ONOFF
|
||||||
|
DB 4,'INIT' ; २¨§¨ «¨§ æ¨ï
|
||||||
|
DW INIT_RMD
|
||||||
|
DB 5,'CLEAR' ; ®ç¨áâ¨âì RAM-Disk
|
||||||
|
DW CLEAR_RAMD_X
|
||||||
|
DB 8,"SPRINTER"
|
||||||
|
DW SPR_1
|
||||||
|
DB 2,"AY"
|
||||||
|
DW AY8910
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
;SAVE_AUTOEXEC:
|
||||||
|
; LD C,0FEH
|
||||||
|
; CALL EXP_FNS
|
||||||
|
; RET
|
||||||
|
AY8910:
|
||||||
|
LD A,#EA
|
||||||
|
LD C,#F3 ;!HARDCODE BIOS.SPRINTER_ALL
|
||||||
|
CALL EXP_FNS
|
||||||
|
;!TEST 06/01/2024 á®åà 塞 á®áâ®ï¨¥ ¯à¥àë¢ ¨© § 祬-â®
|
||||||
|
;EI
|
||||||
|
;
|
||||||
|
CALL AUTO_1D97
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
SPR_1: LD A,(DE)
|
||||||
|
INC DE
|
||||||
|
CP " "
|
||||||
|
JR Z,SPR_1
|
||||||
|
CP "1"
|
||||||
|
LD C,BIOS.RST_CONF.SP97_1
|
||||||
|
JR Z,SP_1
|
||||||
|
CP "2"
|
||||||
|
SCF
|
||||||
|
RET NZ
|
||||||
|
LD C,BIOS.RST_CONF.SP97_2
|
||||||
|
SP_1: LD A,(DE)
|
||||||
|
CP " "+1
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
CALL EXP_FNS
|
||||||
|
CALL AUTO_1D97
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
;****************************************************
|
||||||
|
;*****************************************
|
||||||
|
; ERRORS
|
||||||
|
;*****************************************
|
||||||
|
; 0 - ƒ‹€‚<E282AC>€Ÿ <20><>Ž‚…<E2809A>Š€ <20><>Žƒ<C5BD>€ŒŒ›
|
||||||
|
; 1 - <20>…‚…<E2809A><E280A6>›‰ ”Ž<E2809D>Œ€’ ˆŒ…<C592>ˆ
|
||||||
|
; 2 - ŠŽ<C5A0>…– Š€’€‹Žƒ€
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
DISPLAY "TR_MSD_3.ASZ size: ",/A,$-File_Start
|
DISPLAY "TR_MSD_3.ASZ size: ",/A,$-File_Start
|
||||||
DISPLAY "===================================================="
|
DISPLAY "===================================================="
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
;=======================================================================
|
;=======================================================================
|
||||||
collor_A EQU 0x03
|
collor_A EQU 0x03
|
||||||
collor_B EQU 0x02
|
collor_B EQU 0x02
|
||||||
|
collor_N EQU 0x04
|
||||||
collor_M EQU 0x08
|
collor_M EQU 0x08
|
||||||
collor_T EQU 0x07
|
collor_T EQU 0x07
|
||||||
org_addr EQU #5d3b
|
org_addr EQU #5d3b
|
||||||
@ -27,154 +28,178 @@ filename: DB "boot ",#22,#3a ; ':' 'rem' run
|
|||||||
|
|
||||||
;org #5d65
|
;org #5d65
|
||||||
start: LD (memSP),SP
|
start: LD (memSP),SP
|
||||||
NewDisk: XOR A
|
NewDisk: ;CALL clear_screen
|
||||||
OUT (0xfe),A
|
LD BC,#0905
|
||||||
; ld de, 0x5aff
|
|
||||||
; .l0
|
|
||||||
; ld (de), a
|
|
||||||
; dec de
|
|
||||||
; cp d
|
|
||||||
; jr nz, .l0
|
|
||||||
LD (ZX_VARS.ATTR_P),A
|
|
||||||
LD (ZX_VARS.BORDER),A
|
|
||||||
CALL BASIC_FN.x48.cls
|
|
||||||
LD BC,0x0905
|
|
||||||
LD DE,0
|
LD DE,0
|
||||||
LD HL,catBuff
|
LD HL,catBuff
|
||||||
;.3 nop
|
CALL #3D13
|
||||||
CALL 0x3d13
|
|
||||||
LD A,"a"
|
LD A,"a"
|
||||||
LD (main.markPos),A
|
LD (main.markPos),A
|
||||||
main: LD A,collor_T
|
LD A,1
|
||||||
|
JP keys.setCP
|
||||||
|
;
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
ALIGN #10
|
||||||
|
TXT_BUTTONS:
|
||||||
|
.prev: DB '<<< PgUp'
|
||||||
|
.next: DB 'PgDn >>>'
|
||||||
|
;
|
||||||
|
main.CurrentPage:
|
||||||
|
DB 1
|
||||||
|
main.PagesCounter:
|
||||||
|
DB 1
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;
|
||||||
|
main: LD A,(.CurrentPage)
|
||||||
|
LD (.PagesCounter),A
|
||||||
|
.nextLoop: LD A,collor_T
|
||||||
LD (var_collor),A
|
LD (var_collor),A
|
||||||
LD HL,0x50cc
|
LD HL,#50CC
|
||||||
LD (var_printPos),HL
|
LD (var_printPos),HL
|
||||||
LD HL,catBuff+0x08f5
|
LD HL,catBuff + #08F5
|
||||||
|
|
||||||
|
|
||||||
|
LD B,8
|
||||||
.p1: LD A,(HL)
|
.p1: LD A,(HL)
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL printChar
|
CALL printChar
|
||||||
POP HL
|
POP HL
|
||||||
INC L
|
INC L
|
||||||
LD A,L
|
DJNZ .p1
|
||||||
CP low (catBuff+0x08fd)
|
; LD A,L
|
||||||
JR NZ,.p1
|
; CP low (catBuff + #08FD)
|
||||||
|
; JR NZ,.p1
|
||||||
|
|
||||||
LD HL,0x4000
|
LD HL,#4000
|
||||||
LD (var_printPos),HL
|
LD (var_printPos),HL
|
||||||
|
; ¢ëç¨âë¢ ¨¥ ª â «®£
|
||||||
LD HL,catBuff
|
.buffPointer+1: LD HL,catBuff
|
||||||
.markPos+2: LD BC,"aa"
|
.markPos+2: LD BC,"aa"
|
||||||
.l1: LD A,(HL)
|
.l1: LD A,(HL)
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,.n1
|
JR Z,.nextRec
|
||||||
JP M,.e1
|
|
||||||
;boot detect
|
|
||||||
; cp "b"-1
|
|
||||||
; jr nz, .s2
|
|
||||||
; inc l
|
|
||||||
; ld a, "o"
|
|
||||||
; cp (hl)
|
|
||||||
; jr nz, .s2
|
|
||||||
; inc l
|
|
||||||
; cp (hl)
|
|
||||||
; jr nz, .s2
|
|
||||||
; inc l
|
|
||||||
; ld a, (hl)
|
|
||||||
; cp "t"
|
|
||||||
; jr nz, .s2
|
|
||||||
; .l4: inc l
|
|
||||||
; bit 3, l
|
|
||||||
; jr z, .n1
|
|
||||||
; ld a, " "
|
|
||||||
; cp (hl)
|
|
||||||
; jr z, .l4
|
|
||||||
;
|
;
|
||||||
.s2: LD A,L
|
JP M,DirShowDone
|
||||||
AND 0xf0
|
;
|
||||||
ADD A,0x08
|
SET 3,L
|
||||||
LD L,A
|
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
CP "B"
|
CP "B"
|
||||||
RES 3,L
|
RES 3,L
|
||||||
JR NZ,.n1
|
JR NZ,.nextRec
|
||||||
|
; ¤¢¥ á¯¥æ ª®¯ª¨
|
||||||
|
LD A,C ; C - ⥪ã騩 ä ©«
|
||||||
|
CP "y"
|
||||||
|
JR NC,PRINT_NEXT_BUTTONS ; "::PREV::" "::NEXT::"
|
||||||
|
;
|
||||||
|
; ¯à®å®¤®© ¯à®£®?
|
||||||
|
LD A,(.PagesCounter)
|
||||||
|
DEC A
|
||||||
|
JR NZ,.nextHiddenRec
|
||||||
|
; basic file
|
||||||
LD A,C
|
LD A,C
|
||||||
CP B
|
CP B ; ¢ë¡à ë© ä ©«
|
||||||
LD A,collor_A
|
LD A,collor_A
|
||||||
JR NZ,.s1
|
JR NZ,.notMarked
|
||||||
|
; ¢ë¤¥«¥¨¥ ä ©« ¨ ª®¯¨à®¢ ¨¥ ¥£® ¢ áâப㠧 ¯ãáª
|
||||||
XOR collor_M
|
XOR collor_M
|
||||||
|
;
|
||||||
LD DE,filename
|
LD DE,filename
|
||||||
PUSH BC
|
PUSH BC
|
||||||
LD BC,0x08
|
LD BC,8
|
||||||
LDIR
|
LDIR
|
||||||
POP BC
|
POP BC
|
||||||
RES 3,L
|
RES 3,L
|
||||||
.s1: LD (var_collor),A
|
;
|
||||||
LD A,C
|
.notMarked: CALL prn_txt
|
||||||
PUSH HL
|
.nextHiddenRec: INC C
|
||||||
CALL printChar
|
.nextRec: LD DE,#10
|
||||||
LD A," "
|
|
||||||
CALL printChar
|
|
||||||
POP HL
|
|
||||||
.l2: LD A,(HL)
|
|
||||||
INC HL
|
|
||||||
PUSH HL
|
|
||||||
CALL printChar
|
|
||||||
POP HL
|
|
||||||
LD A,L
|
|
||||||
AND 0x07
|
|
||||||
JR NZ,.l2
|
|
||||||
LD A,(var_printPos)
|
|
||||||
AND 0x1f
|
|
||||||
JR Z,.s3
|
|
||||||
LD A," "
|
|
||||||
PUSH HL
|
|
||||||
CALL printChar
|
|
||||||
POP HL
|
|
||||||
.s3: INC C
|
|
||||||
.n1: LD A,L
|
|
||||||
AND 0xf0
|
|
||||||
LD L,A
|
|
||||||
LD DE,0x0010
|
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
JR .l1
|
JR .l1
|
||||||
.e1:; ld a, c
|
;
|
||||||
; sub "a"
|
|
||||||
; ld (var_files), a
|
PRINT_NEXT_BUTTONS:
|
||||||
|
LD A,(main.PagesCounter)
|
||||||
|
LD (keys.nxtPage),A
|
||||||
|
DEC A
|
||||||
|
JR Z,.noChange
|
||||||
|
LD (main.PagesCounter),A
|
||||||
|
LD (main.buffPointer),HL
|
||||||
|
.noChange: PUSH AF
|
||||||
|
CALL PRINT_HELP
|
||||||
|
POP AF
|
||||||
|
JP Z,keys
|
||||||
|
JR keys.toMain
|
||||||
|
|
||||||
|
PRINT_HELP: LD HL,#5040
|
||||||
|
LD (var_printPos),HL
|
||||||
|
LD A,collor_N
|
||||||
|
PUSH BC
|
||||||
|
LD C," "
|
||||||
|
LD HL,TXT_BUTTONS.prev
|
||||||
|
CALL prn_txt
|
||||||
|
;
|
||||||
|
LD A,collor_N
|
||||||
|
CALL prn_txt
|
||||||
|
;
|
||||||
|
POP BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
;
|
||||||
|
DirShowDone: XOR A
|
||||||
|
LD (keys.nxtPage),A
|
||||||
|
CALL PRINT_HELP
|
||||||
keys: RES 5,(iy+1)
|
keys: RES 5,(iy+1)
|
||||||
.w1: BIT 5,(iy+1)
|
.w1: BIT 5,(iy+1)
|
||||||
JR Z,.w1
|
JR Z,.w1
|
||||||
LD A,(iy-0x32)
|
LD A,(iy-#32)
|
||||||
|
;
|
||||||
CP B
|
CP B
|
||||||
JR Z,exit
|
JR Z,exit
|
||||||
CP 0x0d
|
CP #0D ; enter
|
||||||
JR Z,exit
|
JR Z,exit
|
||||||
CP " "
|
CP " " ; space
|
||||||
JP Z,NewDisk
|
JP Z,NewDisk
|
||||||
CP #08 ; left
|
;
|
||||||
|
CP #04 ; pgUp
|
||||||
|
LD E,-1
|
||||||
|
JR Z,.prevPage
|
||||||
|
;
|
||||||
|
.pgdn: CP #05 ; pgDn
|
||||||
|
LD E,1
|
||||||
|
JR Z,.nextPage
|
||||||
|
;
|
||||||
|
.left: CP #08 ; left
|
||||||
JR NZ,.sl
|
JR NZ,.sl
|
||||||
DEC B
|
DEC B
|
||||||
JR .c1
|
JR .c1
|
||||||
|
;
|
||||||
.sl: CP #0B ; up
|
.sl: CP #0B ; up
|
||||||
JR NZ,.sd
|
JR NZ,.sd
|
||||||
DEC B
|
DEC B
|
||||||
DEC B
|
DEC B
|
||||||
DEC B
|
DEC B
|
||||||
JR .c1
|
JR .c1
|
||||||
|
;
|
||||||
.sd: CP #0A ; down
|
.sd: CP #0A ; down
|
||||||
JR NZ,.su
|
JR NZ,.su
|
||||||
INC B
|
INC B
|
||||||
INC B
|
INC B
|
||||||
INC B
|
INC B
|
||||||
JR .c1
|
JR .c1
|
||||||
|
;
|
||||||
.su: CP #09 ; right
|
.su: CP #09 ; right
|
||||||
JR NZ,.sr
|
JR NZ,.sr
|
||||||
INC B
|
INC B
|
||||||
JR .c1
|
JR .c1
|
||||||
|
;
|
||||||
.sr: CP "a"
|
.sr: CP "a"
|
||||||
JR C,keys
|
JR C,keys
|
||||||
CP C
|
CP C
|
||||||
JR NC,keys
|
JR NC,keys
|
||||||
LD B,A
|
LD B,A
|
||||||
|
;
|
||||||
.c1: LD A,B
|
.c1: LD A,B
|
||||||
CP "a"
|
CP "a"
|
||||||
JR NC,.sf1
|
JR NC,.sf1
|
||||||
@ -184,8 +209,30 @@ keys: RES 5,(iy+1)
|
|||||||
LD A,C
|
LD A,C
|
||||||
DEC A
|
DEC A
|
||||||
.sf2: LD (main.markPos),A
|
.sf2: LD (main.markPos),A
|
||||||
JP main
|
.toMain: JP main.nextLoop
|
||||||
; var_files db 0
|
|
||||||
|
; DE - +24 or -24
|
||||||
|
.nextPage: ;
|
||||||
|
.nxtPage+1: LD A,0
|
||||||
|
AND A
|
||||||
|
JR Z,.skip
|
||||||
|
XOR A
|
||||||
|
LD (.nxtPage),A
|
||||||
|
;
|
||||||
|
; DE - +24 or -24
|
||||||
|
.prevPage: LD A,(main.CurrentPage)
|
||||||
|
ADD A,E
|
||||||
|
JR Z,.skip
|
||||||
|
;
|
||||||
|
.setCP: LD H,A
|
||||||
|
LD L,A
|
||||||
|
LD (main.CurrentPage),HL
|
||||||
|
LD HL,catBuff
|
||||||
|
LD (main.buffPointer),HL
|
||||||
|
.skip: CALL clear_screen
|
||||||
|
JR .toMain
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
memSP+1: LD SP,0
|
memSP+1: LD SP,0
|
||||||
@ -236,6 +283,7 @@ var_collor+1: LD A,0
|
|||||||
SET 5,L
|
SET 5,L
|
||||||
XOR collor_A ^ collor_B
|
XOR collor_A ^ collor_B
|
||||||
LD (HL),A
|
LD (HL),A
|
||||||
|
;
|
||||||
LD HL,var_printPos
|
LD HL,var_printPos
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
ADD A,0x21
|
ADD A,0x21
|
||||||
@ -248,6 +296,68 @@ var_collor+1: LD A,0
|
|||||||
LD (HL),A
|
LD (HL),A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
;
|
||||||
|
|
||||||
|
clear_screen: XOR A
|
||||||
|
OUT (0xfe),A
|
||||||
|
LD (ZX_VARS.ATTR_P),A
|
||||||
|
LD (ZX_VARS.BORDER),A
|
||||||
|
JP BASIC_FN.x48.cls
|
||||||
|
|
||||||
|
; A - current file
|
||||||
|
; choose_color: CP B ; ¢ë¡à ë© ä ©«. #C7
|
||||||
|
; LD A,collor_A
|
||||||
|
; SCF
|
||||||
|
; RET NZ
|
||||||
|
; XOR collor_M
|
||||||
|
; RET
|
||||||
|
|
||||||
|
|
||||||
|
; A - COLOR
|
||||||
|
; C - char of text button
|
||||||
|
; HL - Text
|
||||||
|
prn_txt: LD (var_collor),A
|
||||||
|
LD A,C
|
||||||
|
PUSH HL
|
||||||
|
CALL printChar
|
||||||
|
LD A," "
|
||||||
|
CALL printChar
|
||||||
|
POP HL
|
||||||
|
;
|
||||||
|
.loop: LD A,(HL)
|
||||||
|
INC HL
|
||||||
|
PUSH HL
|
||||||
|
CALL printChar
|
||||||
|
POP HL
|
||||||
|
LD A,L
|
||||||
|
AND 0x07
|
||||||
|
JR NZ,.loop
|
||||||
|
;
|
||||||
|
LD A,(var_printPos)
|
||||||
|
AND 0x1f
|
||||||
|
RET Z
|
||||||
|
LD A," "
|
||||||
|
PUSH HL
|
||||||
|
CALL printChar
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;
|
||||||
|
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; ALIGN #10
|
||||||
|
; TXT_BUTTONS:
|
||||||
|
; .prev: DB '<< PgDn '
|
||||||
|
; .next: DB '>> PgUp '
|
||||||
|
; ;
|
||||||
|
; main.CurrentPage:
|
||||||
|
; DB 1
|
||||||
|
; main.PagesCounter:
|
||||||
|
; DB 1
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
StartLineNum: DB 0
|
StartLineNum: DB 0
|
||||||
DW 0
|
DW 0
|
||||||
;DB #80
|
;DB #80
|
||||||
@ -258,8 +368,346 @@ l2end:
|
|||||||
;ds -$&0x0f
|
;ds -$&0x0f
|
||||||
;ALIGN #10
|
;ALIGN #10
|
||||||
;filename EQU $
|
;filename EQU $
|
||||||
catBuff EQU $ + (-$&0x0f)
|
catBuff EQU #6000 ;$ + (-$&0x0f)
|
||||||
|
|
||||||
|
ASSERT l2end < catBuff,"ERROR!!! Code leaks to catBuff"
|
||||||
EXPORT StartLineNum
|
EXPORT StartLineNum
|
||||||
EXPORT org_addr
|
EXPORT org_addr
|
||||||
;
|
;
|
||||||
|
|
||||||
|
/*
|
||||||
|
; device zxspectrum48
|
||||||
|
INCLUDE 'inc/rom_routines.inc'
|
||||||
|
INCLUDE 'Shared_Includes/constants/ZX_VARS.inc'
|
||||||
|
INCLUDE 'Shared_Includes/constants/zx_char_codes.inc'
|
||||||
|
|
||||||
|
;=======================================================================
|
||||||
|
collor_A EQU 0x03
|
||||||
|
collor_B EQU 0x02
|
||||||
|
collor_N EQU 0x04
|
||||||
|
collor_M EQU 0x08
|
||||||
|
collor_T EQU 0x07
|
||||||
|
org_addr EQU #5d3b
|
||||||
|
|
||||||
|
|
||||||
|
ORG org_addr
|
||||||
|
|
||||||
|
bstart: DW #100 ; line number = 1
|
||||||
|
DW l1end-l1begin ; line length
|
||||||
|
l1begin: DB ZX_Token.randomize,ZX_Token.usr,#30 ; 'rand' 'usr' 0
|
||||||
|
DB #0e,#00,#00 : DW start : DB #00,#0d ; start address
|
||||||
|
l1end: DW #200 ; line number = 2
|
||||||
|
DW l2end-l2begin ; line length
|
||||||
|
l2begin: DB #f9,#c0,#30 ; ':' 'rand' 'usr' 0
|
||||||
|
DB #0e,#00,#00 : DW 15619 : DB #00 ; start address
|
||||||
|
DB #3a,#ea,#3a,#f7,#22
|
||||||
|
filename: DB "boot ",#22,#3a ; ':' 'rem' run
|
||||||
|
;=======================================================================
|
||||||
|
|
||||||
|
;org #5d65
|
||||||
|
start: LD (memSP),SP
|
||||||
|
NewDisk: CALL clear_screen
|
||||||
|
; XOR A
|
||||||
|
; ;OUT (0xfe),A
|
||||||
|
; LD (ZX_VARS.ATTR_P),A
|
||||||
|
; LD (ZX_VARS.BORDER),A
|
||||||
|
; CALL BASIC_FN.x48.cls
|
||||||
|
;
|
||||||
|
LD BC,0x0905
|
||||||
|
LD DE,0
|
||||||
|
LD HL,catBuff
|
||||||
|
;.3 nop
|
||||||
|
CALL 0x3d13
|
||||||
|
LD A,"a"
|
||||||
|
LD (main.markPos),A
|
||||||
|
main: LD A,collor_T
|
||||||
|
LD (var_collor),A
|
||||||
|
LD HL,0x50cc
|
||||||
|
LD (var_printPos),HL
|
||||||
|
LD HL,catBuff+0x08f5
|
||||||
|
.p1: LD A,(HL)
|
||||||
|
PUSH HL
|
||||||
|
CALL printChar
|
||||||
|
POP HL
|
||||||
|
INC L
|
||||||
|
LD A,L
|
||||||
|
CP low (catBuff+0x08fd)
|
||||||
|
JR NZ,.p1
|
||||||
|
|
||||||
|
LD HL,0x4000
|
||||||
|
LD (var_printPos),HL
|
||||||
|
; ¢ëç¨âë¢ ¨¥ ª â «®£
|
||||||
|
.buffPointer+1: LD HL,catBuff
|
||||||
|
.markPos+2: LD BC,"aa"
|
||||||
|
.l1: LD A,(HL)
|
||||||
|
DEC A
|
||||||
|
JR Z,.n1
|
||||||
|
;
|
||||||
|
JP M,keys
|
||||||
|
;
|
||||||
|
LD A,L
|
||||||
|
AND #F0
|
||||||
|
ADD A,8
|
||||||
|
LD L,A
|
||||||
|
LD A,(HL)
|
||||||
|
CP "B"
|
||||||
|
RES 3,L
|
||||||
|
JR NZ,.n1
|
||||||
|
; ¤¢¥ á¯¥æ ª®¯ª¨
|
||||||
|
LD A,C ; C - ⥪ã騩 ä ©«
|
||||||
|
CP "y"
|
||||||
|
JP NC,PRINT_NEXT_BUTTONS ; "::PREV::" "::NEXT::"
|
||||||
|
;
|
||||||
|
; basic file
|
||||||
|
CP B ; ¢ë¡à ë© ä ©«
|
||||||
|
LD A,collor_A
|
||||||
|
JR NZ,.s1
|
||||||
|
; ¢ë¤¥«¥¨¥ ä ©« ¨ ª®¯¨à®¢ ¨¥ ¥£® ¢ áâப㠧 ¯ãáª
|
||||||
|
XOR collor_M
|
||||||
|
;CALL choose_color
|
||||||
|
;JR C,.s1
|
||||||
|
;
|
||||||
|
LD DE,filename
|
||||||
|
PUSH BC
|
||||||
|
LD BC,8
|
||||||
|
LDIR
|
||||||
|
POP BC
|
||||||
|
RES 3,L
|
||||||
|
;
|
||||||
|
.s1: CALL prn_txt
|
||||||
|
.s3: INC C
|
||||||
|
.n1: LD A,L
|
||||||
|
AND #F0
|
||||||
|
LD L,A
|
||||||
|
LD DE,#10
|
||||||
|
ADD HL,DE
|
||||||
|
JR .l1
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;
|
||||||
|
ALIGN #10
|
||||||
|
TXT_BUTTONS:
|
||||||
|
.prev: DB '<< PgDn '
|
||||||
|
.next: DB '>> PgUp '
|
||||||
|
;
|
||||||
|
;
|
||||||
|
keys: RES 5,(iy+1)
|
||||||
|
.w1: BIT 5,(iy+1)
|
||||||
|
JR Z,.w1
|
||||||
|
LD A,(iy-0x32)
|
||||||
|
;
|
||||||
|
CP B
|
||||||
|
JR Z,exit
|
||||||
|
CP 0x0d ; enter
|
||||||
|
JR Z,exit
|
||||||
|
CP " " ; space
|
||||||
|
JP Z,NewDisk
|
||||||
|
;
|
||||||
|
CP #04 ; pgUp
|
||||||
|
LD DE,-384
|
||||||
|
JR Z,.nxtPage
|
||||||
|
;
|
||||||
|
.pgdn: CP #05 ; pgDn
|
||||||
|
LD DE,384
|
||||||
|
JR Z,.nxtPage
|
||||||
|
;
|
||||||
|
.left: CP #08 ; left
|
||||||
|
JR NZ,.sl
|
||||||
|
DEC B
|
||||||
|
JR .c1
|
||||||
|
;
|
||||||
|
.sl: CP #0B ; up
|
||||||
|
JR NZ,.sd
|
||||||
|
DEC B
|
||||||
|
DEC B
|
||||||
|
DEC B
|
||||||
|
JR .c1
|
||||||
|
;
|
||||||
|
.sd: CP #0A ; down
|
||||||
|
JR NZ,.su
|
||||||
|
INC B
|
||||||
|
INC B
|
||||||
|
INC B
|
||||||
|
JR .c1
|
||||||
|
;
|
||||||
|
.su: CP #09 ; right
|
||||||
|
JR NZ,.sr
|
||||||
|
INC B
|
||||||
|
JR .c1
|
||||||
|
;
|
||||||
|
.sr: CP "a"
|
||||||
|
JR C,keys
|
||||||
|
CP C
|
||||||
|
JR NC,keys
|
||||||
|
LD B,A
|
||||||
|
;
|
||||||
|
.c1: LD A,B
|
||||||
|
CP "a"
|
||||||
|
JR NC,.sf1
|
||||||
|
LD A,"a"
|
||||||
|
.sf1: CP C
|
||||||
|
JR C,.sf2
|
||||||
|
LD A,C
|
||||||
|
DEC A
|
||||||
|
.sf2: LD (main.markPos),A
|
||||||
|
.toMain: JP main
|
||||||
|
|
||||||
|
; DE - +24 or -24
|
||||||
|
.nxtPage: LD HL,(main.buffPointer)
|
||||||
|
ADD HL,DE
|
||||||
|
BIT 3,H
|
||||||
|
JR NZ,keys
|
||||||
|
.EnablePages+1: AND 0
|
||||||
|
JR Z,keys
|
||||||
|
;
|
||||||
|
XOR A
|
||||||
|
LD (.EnablePages),A ; A=0 - Disable Pages
|
||||||
|
LD (main.buffPointer),HL
|
||||||
|
CALL clear_screen
|
||||||
|
JR .toMain
|
||||||
|
; var_files db 0
|
||||||
|
|
||||||
|
exit:
|
||||||
|
memSP+1: LD SP,0
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PRINT_NEXT_BUTTONS:
|
||||||
|
LD HL,#5040
|
||||||
|
LD (var_printPos),HL
|
||||||
|
LD A,collor_N
|
||||||
|
LD (keys.EnablePages),A ; A!=0 - Enable Pages
|
||||||
|
LD HL,TXT_BUTTONS.prev
|
||||||
|
CALL prn_txt
|
||||||
|
;
|
||||||
|
LD A,collor_N
|
||||||
|
INC C
|
||||||
|
CALL prn_txt
|
||||||
|
;
|
||||||
|
JP keys
|
||||||
|
|
||||||
|
|
||||||
|
printChar: LD H,A
|
||||||
|
ADD A,A
|
||||||
|
ADD A,A
|
||||||
|
ADD A,A
|
||||||
|
LD L,A
|
||||||
|
LD A,H
|
||||||
|
RLCA
|
||||||
|
RLCA
|
||||||
|
RLCA
|
||||||
|
AND 0x07
|
||||||
|
ADD A,0x3c
|
||||||
|
LD H,A
|
||||||
|
var_printPos+1: LD DE,0x4000
|
||||||
|
|
||||||
|
.l1: LD A,(HL)
|
||||||
|
RRCA
|
||||||
|
OR (HL)
|
||||||
|
INC HL
|
||||||
|
LD (DE),A
|
||||||
|
INC D
|
||||||
|
LD (DE),A
|
||||||
|
INC D
|
||||||
|
LD A,D
|
||||||
|
AND 0x07
|
||||||
|
JR NZ,.l1
|
||||||
|
LD A,D
|
||||||
|
SUB 0x08
|
||||||
|
LD D,A
|
||||||
|
LD A,E
|
||||||
|
ADD A,0x20
|
||||||
|
LD E,A
|
||||||
|
AND 0x20
|
||||||
|
JR NZ,.l1
|
||||||
|
LD HL,(var_printPos)
|
||||||
|
LD A,H
|
||||||
|
RRCA
|
||||||
|
RRCA
|
||||||
|
RRCA
|
||||||
|
ADD A,0x50
|
||||||
|
LD H,A
|
||||||
|
var_collor+1: LD A,0
|
||||||
|
LD (HL),A
|
||||||
|
SET 5,L
|
||||||
|
XOR collor_A ^ collor_B
|
||||||
|
LD (HL),A
|
||||||
|
;
|
||||||
|
LD HL,var_printPos
|
||||||
|
LD A,(HL)
|
||||||
|
ADD A,0x21
|
||||||
|
AND 0xdf
|
||||||
|
LD (HL),A
|
||||||
|
RET NZ
|
||||||
|
INC HL
|
||||||
|
LD A,(HL)
|
||||||
|
ADD A,0x08
|
||||||
|
LD (HL),A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;
|
||||||
|
|
||||||
|
clear_screen: XOR A
|
||||||
|
OUT (0xfe),A
|
||||||
|
LD (ZX_VARS.ATTR_P),A
|
||||||
|
LD (ZX_VARS.BORDER),A
|
||||||
|
JP BASIC_FN.x48.cls
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
; A - current file
|
||||||
|
; choose_color: CP B ; ¢ë¡à ë© ä ©«. #C7
|
||||||
|
; LD A,collor_A
|
||||||
|
; SCF
|
||||||
|
; RET NZ
|
||||||
|
; XOR collor_M
|
||||||
|
; RET
|
||||||
|
|
||||||
|
|
||||||
|
; A - COLOR
|
||||||
|
; C - char of text button
|
||||||
|
; HL - Text
|
||||||
|
prn_txt: LD (var_collor),A
|
||||||
|
LD A,C
|
||||||
|
PUSH HL
|
||||||
|
CALL printChar
|
||||||
|
LD A," "
|
||||||
|
CALL printChar
|
||||||
|
POP HL
|
||||||
|
;
|
||||||
|
.loop: LD A,(HL)
|
||||||
|
INC HL
|
||||||
|
PUSH HL
|
||||||
|
CALL printChar
|
||||||
|
POP HL
|
||||||
|
LD A,L
|
||||||
|
AND 0x07
|
||||||
|
JR NZ,.loop
|
||||||
|
;
|
||||||
|
LD A,(var_printPos)
|
||||||
|
AND 0x1f
|
||||||
|
RET Z
|
||||||
|
LD A," "
|
||||||
|
PUSH HL
|
||||||
|
CALL printChar
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
StartLineNum: DB 0
|
||||||
|
DW 0
|
||||||
|
;DB #80
|
||||||
|
l2end:
|
||||||
|
;bend:
|
||||||
|
DISPLAY "printChar ",/A,$-printChar
|
||||||
|
DISPLAY "code ",/A,$-start
|
||||||
|
;ds -$&0x0f
|
||||||
|
;ALIGN #10
|
||||||
|
;filename EQU $
|
||||||
|
catBuff EQU #6000 ;$ + (-$&0x0f)
|
||||||
|
|
||||||
|
ASSERT l2end < catBuff,"ERROR!!! Code leaks to catBuff"
|
||||||
|
EXPORT StartLineNum
|
||||||
|
EXPORT org_addr
|
||||||
|
;
|
||||||
|
*/
|
||||||
@ -1,2 +1,2 @@
|
|||||||
StartLineNum: EQU 0x00005EAA
|
StartLineNum: EQU 0x00005F30
|
||||||
org_addr: EQU 0x00005D3B
|
org_addr: EQU 0x00005D3B
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user