mirror of
https://github.com/Tolik-Trek/ZX-SP-ROMs.git
synced 2026-06-15 09:21:45 +03:00
Release 25/06/2025
This commit is contained in:
commit
d25a15300e
56
SP_128.ASM
56
SP_128.ASM
@ -691,9 +691,9 @@ CHAR_SET EQU #3D00
|
|||||||
DEFW adr
|
DEFW adr
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
DEFINE START_PAUSE #0000
|
DEFINE START_PAUSE #0001
|
||||||
INCLUDE 'shared_includes/constants/sp2000.inc'
|
INCLUDE 'shared_includes/constants/sp2000.inc'
|
||||||
INCLUDE 'inc/char_codes.inc'
|
INCLUDE 'shared_includes/constants/zx_char_codes.inc'
|
||||||
;[^]..................................................................................................................... SP2000 [^]
|
;[^]..................................................................................................................... SP2000 [^]
|
||||||
|
|
||||||
; -----------------------
|
; -----------------------
|
||||||
@ -876,9 +876,9 @@ NMI_POINT:
|
|||||||
|
|
||||||
;
|
;
|
||||||
BLOCK #6B-$,0
|
BLOCK #6B-$,0
|
||||||
; ============
|
; ============
|
||||||
; RAM ROUTINES
|
; RAM ROUTINES
|
||||||
; ============
|
; ============
|
||||||
; The following code will be copied to locations #5B00 to #5B57, within the old ZX Printer buffer.
|
; The following code will be copied to locations #5B00 to #5B57, within the old ZX Printer buffer.
|
||||||
|
|
||||||
; -----------------
|
; -----------------
|
||||||
@ -922,6 +922,7 @@ NMI_POINT:
|
|||||||
; ENT
|
; ENT
|
||||||
|
|
||||||
;SWAP_ROM
|
;SWAP_ROM
|
||||||
|
RAM_ROUTINES:
|
||||||
L006B: PUSH AF ; Save AF and BC.
|
L006B: PUSH AF ; Save AF and BC.
|
||||||
PUSH BC ;
|
PUSH BC ;
|
||||||
LD BC,#7FFD ;
|
LD BC,#7FFD ;
|
||||||
@ -1012,7 +1013,9 @@ L00B5: EX AF,AF' ; Save AF registers. For a read, A holds the byte read
|
|||||||
OUT (C),A ; Switch back to original paging configuration.
|
OUT (C),A ; Switch back to original paging configuration.
|
||||||
EI ;
|
EI ;
|
||||||
EX AF,AF' ; Restore AF registers. For a read, A holds the byte read and the flags the success status.
|
EX AF,AF' ; Restore AF registers. For a read, A holds the byte read and the flags the success status.
|
||||||
RET ; <<< End of RAM Routines >>>
|
RET
|
||||||
|
RAM_ROUTINES.Size EQU $-RAM_ROUTINES
|
||||||
|
;<<<<<<<<<<<<<<<<<<<<<<<<< End of RAM Routines >>>>>>>>>>>>>>>>>>>>>>>>>;
|
||||||
|
|
||||||
|
|
||||||
; ===============================
|
; ===============================
|
||||||
@ -1142,10 +1145,10 @@ L0137: LD B,D ; Complete setting up the sound chip registers.
|
|||||||
LD A,#FF ; Disable AY-3-8912 sound channels.
|
LD A,#FF ; Disable AY-3-8912 sound channels.
|
||||||
OUT (C),A ;
|
OUT (C),A ;
|
||||||
|
|
||||||
LD DE,SWAP_ROM ; #5B00. Copy the various paging routines to the old printer buffer.
|
LD DE,SWAP_ROM ; #5B00. Copy the various paging routines to the old printer buffer.
|
||||||
LD HL,L006B ; The source is in this ROM.
|
LD HL,RAM_ROUTINES ; The source is in this ROM.
|
||||||
LD BC,L006B.Size; There are eighty eight bytes to copy.
|
LD BC,RAM_ROUTINES.Size ; There are eighty eight bytes to copy.
|
||||||
LDIR ; Copy the block of bytes.
|
LDIR ; Copy the block of bytes.
|
||||||
|
|
||||||
LD A,#CF ; Load A with the code for the Z80 instruction 'RST #08'.
|
LD A,#CF ; Load A with the code for the Z80 instruction 'RST #08'.
|
||||||
LD (RAMRST),A ; #5B5D. Insert into new System Variable RAMRST.
|
LD (RAMRST),A ; #5B5D. Insert into new System Variable RAMRST.
|
||||||
@ -10027,7 +10030,7 @@ L2584: CALL L28BE ; Reset Cursor Position.
|
|||||||
; --------------
|
; --------------
|
||||||
; Show Main Menu
|
; Show Main Menu
|
||||||
; --------------
|
; --------------
|
||||||
|
BLOCK #259F-$,#FF; áâ ¤ àâë© ¤à¥á
|
||||||
L259F: LD HL,TSTACK ; #5BFF.
|
L259F: LD HL,TSTACK ; #5BFF.
|
||||||
LD (OLDSP),HL ; #5B81.
|
LD (OLDSP),HL ; #5B81.
|
||||||
|
|
||||||
@ -10555,7 +10558,7 @@ L27EB:
|
|||||||
M_COM: BYTE 6,0
|
M_COM: BYTE 6,0
|
||||||
WORD TRDOS
|
WORD TRDOS
|
||||||
BYTE 1
|
BYTE 1
|
||||||
WORD HARDWARE ;ISDOS
|
WORD HARDWARE
|
||||||
BYTE 2
|
BYTE 2
|
||||||
WORD L286C
|
WORD L286C
|
||||||
BYTE 3
|
BYTE 3
|
||||||
@ -10635,25 +10638,36 @@ L281C: LD HL,#EC0D ; Editor flags.
|
|||||||
; JP L1AF1 ; Run the tape loader.
|
; JP L1AF1 ; Run the tape loader.
|
||||||
L2831:
|
L2831:
|
||||||
ED_COM: BYTE 10 ; Number of entries.
|
ED_COM: BYTE 10 ; Number of entries.
|
||||||
BYTE #0B ; Key code: Cursor up.
|
;
|
||||||
|
BYTE #0B ; Key code: Cursor up.
|
||||||
DEFW L272E ; MENU-UP handler routine.
|
DEFW L272E ; MENU-UP handler routine.
|
||||||
BYTE #0A ; Key code: Cursor dow
|
;
|
||||||
|
BYTE #0A ; Key code: Cursor down
|
||||||
DEFW L2731 ; MENU-DOWN handler routine.
|
DEFW L2731 ; MENU-DOWN handler routine.
|
||||||
BYTE #0D ; Key code: Enter.
|
;
|
||||||
|
BYTE #0D ; Key code: Enter.
|
||||||
DEFW L2717 ; MENU-SELECT handler routine.
|
DEFW L2717 ; MENU-SELECT handler routine.
|
||||||
|
;
|
||||||
BYTE '8' ; ᨪ«¥à-¤¦®©á⨪¥ ¢¨§
|
BYTE '8' ; ᨪ«¥à-¤¦®©á⨪¥ ¢¨§
|
||||||
DEFW L2731 ; MENU-DOWN handler routine.
|
DEFW L2731 ; MENU-DOWN handler routine.
|
||||||
BYTE '9' ; ᨪ«¥à-¤¦®©á⨪¥ ¢¢¥àå
|
;
|
||||||
|
BYTE '9' ; ᨪ«¥à-¤¦®©á⨪¥ ¢¢¥àå
|
||||||
DEFW L272E ; MENU-UP handler routine.
|
DEFW L272E ; MENU-UP handler routine.
|
||||||
BYTE '0' ; ᨪ«¥à-¤¦®©á⨪¥ enter
|
;
|
||||||
|
;
|
||||||
|
BYTE '0' ; ᨪ«¥à-¤¦®©á⨪¥ enter
|
||||||
DEFW L2717 ; MENU-SELECT handler routine.
|
DEFW L2717 ; MENU-SELECT handler routine.
|
||||||
BYTE '6' ; ᨪ«¥à-¤¦®©á⨪¥ ¢«¥¢® Page Up
|
;
|
||||||
|
BYTE '6' ; ᨪ«¥à-¤¦®©á⨪¥ ¢«¥¢® Page Up
|
||||||
DEFW LEFT_E ; MENU-PageUp
|
DEFW LEFT_E ; MENU-PageUp
|
||||||
BYTE #08 ; Key code: Cursor left
|
;
|
||||||
|
BYTE #08 ; Key code: Cursor left
|
||||||
DEFW LEFT ; MENU-PageUp
|
DEFW LEFT ; MENU-PageUp
|
||||||
BYTE '7' ; [x] ¡ë«® 7
|
;
|
||||||
|
BYTE '7' ; [x] ¡ë«® 7
|
||||||
DEFW RIGHT_E ; MENU-PageDown
|
DEFW RIGHT_E ; MENU-PageDown
|
||||||
BYTE #09 ; Key code: Cursor right
|
;
|
||||||
|
BYTE #09 ; Key code: Cursor right
|
||||||
DEFW RIGHT ; MENU-PageDown
|
DEFW RIGHT ; MENU-PageDown
|
||||||
|
|
||||||
; DB #1A ; ¯à®áâ® áâ¥à¥âì íâã áâà®çªã, ¥ ã¦
|
; DB #1A ; ¯à®áâ® áâ¥à¥âì íâã áâà®çªã, ¥ ã¦
|
||||||
|
|||||||
3056
SP_TRDOS.ASM
3056
SP_TRDOS.ASM
File diff suppressed because it is too large
Load Diff
6761
SP__48.ASM
6761
SP__48.ASM
File diff suppressed because it is too large
Load Diff
@ -1 +1 @@
|
|||||||
Subproject commit 6e27011b6259b0256ce65d91a53ef1185223eafa
|
Subproject commit a0e68ce3a19bd47537585e49bfbf5e45fab197a1
|
||||||
BIN
TR-DOS_6.11Q_PENTAGON512.ROM
Normal file
BIN
TR-DOS_6.11Q_PENTAGON512.ROM
Normal file
Binary file not shown.
251
TRDOS/TR_HDD_4.ASZ
Normal file
251
TRDOS/TR_HDD_4.ASZ
Normal file
@ -0,0 +1,251 @@
|
|||||||
|
File_Start DEFL $
|
||||||
|
DISPLAY "===================================================="
|
||||||
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
|
|
||||||
|
HDD_PROG:
|
||||||
|
;!TEST 06/01/2024 ã¡¨à ¥¬ «¨è¨¥ ⥫®¤¢¨¦¥¨ï
|
||||||
|
;LD C,BIOS.HDD_INIT and #BF
|
||||||
|
;CALL HD_CMD
|
||||||
|
LD C,BIOS.HDD_INIT
|
||||||
|
CALL EXP_FNS
|
||||||
|
;
|
||||||
|
JP C,HDD_PROG_E
|
||||||
|
LD HL,SYS_PAGE.HD_IDF_ADR.ModelNum
|
||||||
|
LD B,32
|
||||||
|
HDD_PROG_L:
|
||||||
|
DI
|
||||||
|
IN A,(SLOT3)
|
||||||
|
LD D,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,L
|
||||||
|
XOR 1
|
||||||
|
LD L,A
|
||||||
|
LD C,(HL)
|
||||||
|
LD A,L
|
||||||
|
XOR 1
|
||||||
|
LD L,A
|
||||||
|
INC HL
|
||||||
|
LD A,D
|
||||||
|
OUT (SLOT3),A
|
||||||
|
; RET_PAGE3
|
||||||
|
EI
|
||||||
|
LD A,C
|
||||||
|
PUSH BC
|
||||||
|
RST #10
|
||||||
|
POP BC
|
||||||
|
DJNZ HDD_PROG_L
|
||||||
|
;!TEST 06/01/2024 ã¡¨à ¥¬ «¨è¨¥ ⥫®¤¢¨¦¥¨ï
|
||||||
|
;LD C,BIOS.HDD_RECAL and #BF
|
||||||
|
;CALL HD_CMD
|
||||||
|
LD C,BIOS.HDD_RECAL
|
||||||
|
CALL EXP_FNS
|
||||||
|
;
|
||||||
|
JP NC,AUTO_03E1
|
||||||
|
|
||||||
|
HDD_ERROR:
|
||||||
|
CALL PRINT_HEX_A
|
||||||
|
LD HL,HD_TX
|
||||||
|
JP AUTO_03E4
|
||||||
|
|
||||||
|
; JP AUTO_03E1
|
||||||
|
|
||||||
|
HDD_PROG_E:
|
||||||
|
LD HL,HD_TX2
|
||||||
|
JP AUTO_03E4
|
||||||
|
|
||||||
|
;
|
||||||
|
HDD_SET:
|
||||||
|
.loop: LD A,(DE)
|
||||||
|
INC DE
|
||||||
|
CP " "
|
||||||
|
JR Z,.loop
|
||||||
|
CP "\r"
|
||||||
|
JR Z,.check
|
||||||
|
;
|
||||||
|
DEC DE
|
||||||
|
DEC DE
|
||||||
|
JP CHOOSE_HDD
|
||||||
|
;
|
||||||
|
; [x] new tr-hdd
|
||||||
|
.check: DI
|
||||||
|
LD C,SLOT3
|
||||||
|
IN B,(C)
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD E,DRIVE_CODES.TRDOS.HDD
|
||||||
|
LD A,(SYS_PAGE.CURRENT_DIR_DRIVE_COPY)
|
||||||
|
CP #FF
|
||||||
|
JR Z,.init
|
||||||
|
CP E
|
||||||
|
JR C,.init
|
||||||
|
;
|
||||||
|
LD (SYS_PAGE.CURRENT_DIR_DRIVE),A
|
||||||
|
OUT (C),B
|
||||||
|
PUSH DE
|
||||||
|
AND #0F
|
||||||
|
LD C,BIOS.HDD_PART
|
||||||
|
CALL EXP_FNS
|
||||||
|
POP DE
|
||||||
|
JR C,CHOOSE_HDD.error
|
||||||
|
JR .exit
|
||||||
|
;
|
||||||
|
.init: OUT (C),B
|
||||||
|
PUSH DE
|
||||||
|
LD C,BIOS.HDD_INIT
|
||||||
|
CALL EXP_FNS
|
||||||
|
POP DE
|
||||||
|
JP C,HDD_PROG_E
|
||||||
|
;
|
||||||
|
.exit: LD C,BIOS.SET_DISK_REDIR
|
||||||
|
JP EXP_FNS
|
||||||
|
|
||||||
|
|
||||||
|
;[x] 29/01/2024
|
||||||
|
;¢ë室: A: bit1 - Primary/Secondary, bit0 - master/slave, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR
|
||||||
|
CHOOSE_HDD:
|
||||||
|
.loop: LD A,(DE)
|
||||||
|
INC DE
|
||||||
|
CP " "
|
||||||
|
JR Z,.loop
|
||||||
|
LD A,(DE)
|
||||||
|
CP "\r"
|
||||||
|
JR Z,.error
|
||||||
|
; ®¬¥à à §¤¥«
|
||||||
|
LD A,(DE)
|
||||||
|
CP "4"
|
||||||
|
JR NC,.error
|
||||||
|
CP "0"
|
||||||
|
JR C,.error
|
||||||
|
SUB "0"
|
||||||
|
RLA
|
||||||
|
RLA
|
||||||
|
LD C,A
|
||||||
|
; Primary/Secondary, master/slave
|
||||||
|
DEC DE
|
||||||
|
LD A,(DE)
|
||||||
|
CP "4"
|
||||||
|
JR NC,.error
|
||||||
|
CP "0"
|
||||||
|
JR C,.error
|
||||||
|
SUB "0"
|
||||||
|
OR C
|
||||||
|
;
|
||||||
|
.part: PUSH AF
|
||||||
|
LD C,BIOS.HDD_PART
|
||||||
|
CALL EXP_FNS
|
||||||
|
POP BC
|
||||||
|
JR C,.error
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;CALL RESTORE_CURRENT_DIR
|
||||||
|
IN A,(SLOT3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,(SYS_PAGE.CURRENT_DIR_DRIVE)
|
||||||
|
CP #FF
|
||||||
|
JR Z,.skip
|
||||||
|
LD (SYS_PAGE.CURRENT_DIR_DRIVE_COPY),A
|
||||||
|
XOR A
|
||||||
|
DEC A
|
||||||
|
LD (SYS_PAGE.CURRENT_DIR_DRIVE),A
|
||||||
|
.skip: EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;XOR A
|
||||||
|
LD C,0 ; ®¡ã«¨âì C
|
||||||
|
LD A,B
|
||||||
|
;OR #40
|
||||||
|
;LD B,A
|
||||||
|
;
|
||||||
|
; PUSH AF
|
||||||
|
; LD A,(ZX_VARS.OPER_DISK)
|
||||||
|
; LD C,BIOS.GET_DRV_ST
|
||||||
|
; CALL EXP_FNS
|
||||||
|
; POP BC
|
||||||
|
; JR C,.error
|
||||||
|
; ;
|
||||||
|
; AND #40 ;!HARDCODE HDD
|
||||||
|
; LD C,A ; ®¡ã«¨âì C
|
||||||
|
; LD A,B
|
||||||
|
; RET NZ
|
||||||
|
;
|
||||||
|
PUSH BC
|
||||||
|
LD BC,(ZX_VARS.OPER_DISK - 1)
|
||||||
|
; LD B,A
|
||||||
|
; XOR A
|
||||||
|
LD C,BIOS.HDD_TO_DRV
|
||||||
|
CALL EXP_FNS
|
||||||
|
POP AF
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.error: ;AND %1101'1111
|
||||||
|
;CP "*"
|
||||||
|
;JR Z,.set_from_sys_page
|
||||||
|
LD HL,MSG_3
|
||||||
|
JP ERR_EXIT
|
||||||
|
;
|
||||||
|
; .setUp_HDD:
|
||||||
|
; PUSH BC
|
||||||
|
; LD A,(ZX_VARS.OPER_DISK)
|
||||||
|
; LD B,A
|
||||||
|
; XOR A
|
||||||
|
; LD C,BIOS.HDD_TO_DRV
|
||||||
|
; CALL EXP_FNS
|
||||||
|
; POP BC
|
||||||
|
; RET
|
||||||
|
;
|
||||||
|
;.set_from_sys_page:
|
||||||
|
; !!!
|
||||||
|
|
||||||
|
|
||||||
|
; [x] new tr-hdd
|
||||||
|
RESTORE_CURRENT_DIR:
|
||||||
|
PUSH AF
|
||||||
|
;
|
||||||
|
LD C,BIOS.GET_DISK_REDIR
|
||||||
|
CALL EXP_FNS
|
||||||
|
;CP #40
|
||||||
|
;JR C,.exit_Res_Dir
|
||||||
|
;AND #0F
|
||||||
|
LD H,A
|
||||||
|
;
|
||||||
|
IN A,(SLOT3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD A,(SYS_PAGE.CURRENT_DIR_DRIVE)
|
||||||
|
CP H
|
||||||
|
JR NZ,.exit_Res_Dir
|
||||||
|
|
||||||
|
LD HL,(SYS_PAGE.CURRENT_DIR_SEC_L)
|
||||||
|
LD DE,(SYS_PAGE.CURRENT_DIR_SEC_H)
|
||||||
|
LD A,H
|
||||||
|
OR L
|
||||||
|
OR D
|
||||||
|
OR E
|
||||||
|
JR Z,.exit_Res_Dir
|
||||||
|
;
|
||||||
|
LD (SYS_PAGE.MSD_CAT_SEC),HL
|
||||||
|
LD (SYS_PAGE.MSD_CAT_SEC2),DE
|
||||||
|
.exit_Res_Dir:
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
POP AF
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
|
BOOT_PART_2:
|
||||||
|
IF DEFtrd_boot_small
|
||||||
|
INCBIN 'build/boot.bin',248
|
||||||
|
ELSE
|
||||||
|
INCBIN 'build/boot.bin',248,181
|
||||||
|
ENDIF
|
||||||
|
.SIZE EQU $-BOOT_PART_2
|
||||||
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
|
DISPLAY "TR_HDD_4.ASZ size: ",/A,$-File_Start
|
||||||
|
DISPLAY "===================================================="
|
||||||
@ -1,609 +0,0 @@
|
|||||||
;
|
|
||||||
; for INCLUDE
|
|
||||||
; 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
|
|
||||||
|
|
||||||
;***********************************************
|
|
||||||
;
|
|
||||||
;***********************************************
|
|
||||||
MSDOS_1ST_FL:
|
|
||||||
PUSH DE
|
|
||||||
CALL READ_BPB
|
|
||||||
CALL READ_1ST_DIR
|
|
||||||
POP DE
|
|
||||||
MSDOS_TEST_FL:
|
|
||||||
PUSH DE
|
|
||||||
DI
|
|
||||||
IN A,(PAGE3)
|
|
||||||
LD E,A
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (PAGE3),A
|
|
||||||
LD A,E
|
|
||||||
LD E,(HL)
|
|
||||||
OUT (PAGE3),A
|
|
||||||
EI
|
|
||||||
LD A,E
|
|
||||||
POP DE
|
|
||||||
AND A
|
|
||||||
SCF
|
|
||||||
RET Z ; ŠŽ<C5A0>…– Š€’€‹Žƒ€
|
|
||||||
CP 0E5H
|
|
||||||
SCF
|
|
||||||
CCF
|
|
||||||
; DEC A ; ‘’…<E28099>’›‰ ”€‰‹
|
|
||||||
; AND A
|
|
||||||
RET
|
|
||||||
;**********************************
|
|
||||||
MSDOS_NEXT_FL:
|
|
||||||
PUSH DE
|
|
||||||
LD DE,20H
|
|
||||||
ADD HL,DE
|
|
||||||
DI
|
|
||||||
IN A,(PAGE3)
|
|
||||||
LD D,A
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (PAGE3),A
|
|
||||||
LD A,(COUNT_FL)
|
|
||||||
DEC A
|
|
||||||
LD (COUNT_FL),A
|
|
||||||
LD E,A
|
|
||||||
LD A,D
|
|
||||||
OUT (PAGE3),A
|
|
||||||
; RET_PAGE3
|
|
||||||
EI
|
|
||||||
LD A,E
|
|
||||||
POP DE
|
|
||||||
AND A ; ‘<><E28098>Ž‘ CF !!
|
|
||||||
JR NZ,MSDOS_TEST_FL
|
|
||||||
PUSH DE
|
|
||||||
DI
|
|
||||||
IN A,(PAGE3)
|
|
||||||
LD D,A
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (PAGE3),A
|
|
||||||
LD A,(COUNT_SEC)
|
|
||||||
DEC A
|
|
||||||
LD (COUNT_SEC),A
|
|
||||||
LD E,A
|
|
||||||
LD A,D
|
|
||||||
OUT (PAGE3),A
|
|
||||||
; RET_PAGE3
|
|
||||||
EI
|
|
||||||
LD A,E
|
|
||||||
POP DE
|
|
||||||
AND A
|
|
||||||
SCF
|
|
||||||
RET Z
|
|
||||||
PUSH DE
|
|
||||||
CALL READ_NEXT_DIR
|
|
||||||
POP DE
|
|
||||||
LD HL,MS_DIR
|
|
||||||
JR MSDOS_TEST_FL
|
|
||||||
|
|
||||||
;**********************************
|
|
||||||
MSDOS_CAT:
|
|
||||||
PUSH DE
|
|
||||||
CALL AUTO_1D97 ; CLS
|
|
||||||
CALL OPEN_CH2
|
|
||||||
LD A,13
|
|
||||||
RST 10H
|
|
||||||
POP DE ; ‘’<E28098>ŽŠ€ <20>Ž‘‹… CAT
|
|
||||||
|
|
||||||
CAT_SPACES:
|
|
||||||
LD A,(DE)
|
|
||||||
CP 20H
|
|
||||||
JR NZ,CAT_NO_SPACE
|
|
||||||
INC DE
|
|
||||||
JR CAT_SPACES
|
|
||||||
CAT_NO_SPACE:
|
|
||||||
CP 13
|
|
||||||
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,FL_NAME
|
|
||||||
LD A,' '
|
|
||||||
RST 10H
|
|
||||||
LD A,' '
|
|
||||||
RST 10H
|
|
||||||
LD B,8
|
|
||||||
PRINT_MSD_L1:
|
|
||||||
LD A,(HL)
|
|
||||||
RST 10H
|
|
||||||
INC HL
|
|
||||||
DJNZ PRINT_MSD_L1
|
|
||||||
LD A,' '
|
|
||||||
RST 10H
|
|
||||||
LD B,3
|
|
||||||
PRINT_MSD_L2:
|
|
||||||
LD A,(HL)
|
|
||||||
RST 10H
|
|
||||||
INC HL
|
|
||||||
DJNZ PRINT_MSD_L2
|
|
||||||
LD A,6
|
|
||||||
RST 10H
|
|
||||||
|
|
||||||
POP DE
|
|
||||||
POP HL
|
|
||||||
RET
|
|
||||||
|
|
||||||
PRINT_MSD_DATS:
|
|
||||||
PUSH HL
|
|
||||||
PUSH DE
|
|
||||||
LD HL,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,(PAGE3)
|
|
||||||
LD C,A
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (PAGE3),A
|
|
||||||
LD A,C
|
|
||||||
LD DE,FL_NAME
|
|
||||||
LD BC,11
|
|
||||||
LDIR
|
|
||||||
|
|
||||||
LD BC,15
|
|
||||||
ADD HL,BC
|
|
||||||
LD BC,5
|
|
||||||
LDIR
|
|
||||||
|
|
||||||
LD L,(HL)
|
|
||||||
OUT (PAGE3),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,(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 13
|
|
||||||
JR Z,CMD_EXE1
|
|
||||||
CP 20H
|
|
||||||
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 (OPER_DISK),A
|
|
||||||
LD (CONT_DISK),A
|
|
||||||
LD B,A
|
|
||||||
LD A,(PDOS_COPY)
|
|
||||||
AND 7CH
|
|
||||||
OR B
|
|
||||||
LD (PDOS_COPY),A
|
|
||||||
OUT (P_DOS_FF),A
|
|
||||||
JP AUTO_03E1
|
|
||||||
|
|
||||||
END_TAB2:
|
|
||||||
SUB 4
|
|
||||||
CP RAMD_KEY_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
|
|
||||||
JP AUTO_03E4
|
|
||||||
|
|
||||||
;************************************
|
|
||||||
|
|
||||||
LOAD_RMD:
|
|
||||||
CALL RAMD_SYM ; ¯®«ãç¨âì ®¬¥à RAM-Disk ¨§ (DE)
|
|
||||||
JP C,MSD_ERR
|
|
||||||
LOAD_RMD_XX:
|
|
||||||
LD (MED_START+1),A ; á®åà ¨âì
|
|
||||||
CALL MSDOS_FIND_FILE
|
|
||||||
JP C,MSD_ERR
|
|
||||||
|
|
||||||
CALL RMD_BLKS_FL ; B - ç¨á«® ¡«®ª®¢ , DE - ¡á®«îâë© á¥ªâ®à
|
|
||||||
LD A,(MED_START+1)
|
|
||||||
PUSH AF
|
|
||||||
CALL CLEAR_RMD_A ; ®á¢®¡®¤¨âì RAM-Disk A
|
|
||||||
POP AF
|
|
||||||
CALL GET_RMD_A ; ãáâ ®¢¨âì RAM-Disk A à §¬¥à®¬ B
|
|
||||||
|
|
||||||
LD HL,0C000H
|
|
||||||
CALL MSDOS_READ_FILE
|
|
||||||
JP AUTO_03E1
|
|
||||||
|
|
||||||
SAVE_RMD:
|
|
||||||
CALL RAMD_SYM ; ¯®«ãç¨âì ®¬¥à RAM-Disk ¨§ (DE)
|
|
||||||
JP C,MSD_ERR
|
|
||||||
LD (MED_START+1),A
|
|
||||||
CALL MSDOS_FIND_FILE
|
|
||||||
JP C,MSD_ERR
|
|
||||||
|
|
||||||
CALL RMD_BLKS_FL
|
|
||||||
|
|
||||||
LD A,(MED_START+1)
|
|
||||||
CALL TEST_RAMD ; ¯à®¢¥à¨âì «¨ç¨¥ RAM-Disk A à §¬¥à®¬ B
|
|
||||||
JP C,MSD_ERR ; A - ®¬¥à ¯¥à¢®£® ¡«®ª
|
|
||||||
JP Z,MSD_ERR
|
|
||||||
|
|
||||||
LD HL,0C000H
|
|
||||||
CALL MSDOS_WRITE_FILE
|
|
||||||
JP AUTO_03E1
|
|
||||||
|
|
||||||
RMD_BLKS_FL:
|
|
||||||
LD A,(FL_SIZE+2)
|
|
||||||
PUSH HL
|
|
||||||
LD HL,(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
|
|
||||||
|
|
||||||
;****************************************
|
|
||||||
MSDOS_KOMP_FL: ; DE - ˆŒŸ ”€‰‹€ ‘Ž *,?
|
|
||||||
; HL - ˆŒŸ ‚ Š€’€‹Žƒ…
|
|
||||||
CALL COPY_NAME_MSD ; <20>…<EFBFBD>…Œ…‘’ˆ’œ ˆŒŸ ‚ Ž<>‹€‘’œ TR-DOS
|
|
||||||
LD A,(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,FL_NAME
|
|
||||||
CALL MSDOS_KOMP_ALL
|
|
||||||
POP HL
|
|
||||||
POP DE
|
|
||||||
RET
|
|
||||||
|
|
||||||
MSDOS_KOMP_ALL:
|
|
||||||
LD A,(DE)
|
|
||||||
INC DE
|
|
||||||
CP 20H
|
|
||||||
JR Z,MSDOS_KOMP_ALL
|
|
||||||
CP 13
|
|
||||||
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 13
|
|
||||||
JR Z,KOMP_SPACING3
|
|
||||||
CP 20H
|
|
||||||
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 13
|
|
||||||
JR Z,KOMP_SPACING
|
|
||||||
CP 20H
|
|
||||||
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 223
|
|
||||||
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,(PAGE3)
|
|
||||||
EX AF,AF'
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (PAGE3),A
|
|
||||||
LD A,(MS_BPB+CLAST_SIZE)
|
|
||||||
|
|
||||||
EX DE,HL
|
|
||||||
LD BC,0
|
|
||||||
|
|
||||||
LD HL,0
|
|
||||||
LD IX,0
|
|
||||||
|
|
||||||
CALC_CL_LP:
|
|
||||||
ADD IX,DE
|
|
||||||
ADC HL,BC
|
|
||||||
|
|
||||||
DEC A
|
|
||||||
JR NZ,CALC_CL_LP
|
|
||||||
|
|
||||||
LD DE,(MSD_DAT_SEC)
|
|
||||||
LD BC,(MSD_DAT_SEC2)
|
|
||||||
|
|
||||||
ADD IX,DE
|
|
||||||
ADC HL,BC ; HL,IX - ‘Œ…™…<E284A2>ˆ… Š‹€‘’…<E28099>€ Ž’ <20>€—€‹€ „€<E2809E><E282AC>›•
|
|
||||||
|
|
||||||
EX AF,AF'
|
|
||||||
OUT (PAGE3),A
|
|
||||||
|
|
||||||
PUSH IX
|
|
||||||
EX (SP),HL
|
|
||||||
POP IX
|
|
||||||
EX DE,HL
|
|
||||||
|
|
||||||
EI
|
|
||||||
POP HL
|
|
||||||
POP BC
|
|
||||||
RET
|
|
||||||
|
|
||||||
HD_TX: DB ' ERR_HD',0A0H
|
|
||||||
HD_TX2: DB 'HDD not found',0A0H
|
|
||||||
MSG_3: DB 'ERROR...',0A0H
|
|
||||||
MSDOS_MSG: DB 'File not found...',0A0H
|
|
||||||
NO_MEMORY: DB 'No RAM-Disk MEM',0A0H
|
|
||||||
|
|
||||||
WORDS:
|
|
||||||
DB 5,'CLEAR' ; ®ç¨áâ¨âì RAM-Disk
|
|
||||||
DW CLEAR_RAMD_X
|
|
||||||
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 8,"SPRINTER"
|
|
||||||
DW SPR_1
|
|
||||||
DB 2,"AY"
|
|
||||||
DW AY8910
|
|
||||||
DB 0
|
|
||||||
|
|
||||||
;SAVE_AUTOEXEC:
|
|
||||||
; LD C,0FEH
|
|
||||||
; CALL EXP_FNS
|
|
||||||
; RET
|
|
||||||
AY8910:
|
|
||||||
LD A,0EAH
|
|
||||||
LD C,0F3H
|
|
||||||
CALL EXP_FNS
|
|
||||||
EI
|
|
||||||
CALL AUTO_1D97
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
|
|
||||||
SPR_1:
|
|
||||||
LD A,(DE)
|
|
||||||
INC DE
|
|
||||||
CP 20H
|
|
||||||
JR Z,SPR_1
|
|
||||||
CP "1"
|
|
||||||
LD C,0F0H
|
|
||||||
JR Z,SP_1
|
|
||||||
CP "2"
|
|
||||||
SCF
|
|
||||||
RET NZ
|
|
||||||
LD C,0F1H
|
|
||||||
SP_1: LD A,(DE)
|
|
||||||
CP 21H
|
|
||||||
CCF
|
|
||||||
RET C
|
|
||||||
CALL EXP_FNS
|
|
||||||
EI
|
|
||||||
CALL AUTO_1D97
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
|
|
||||||
|
|
||||||
;****************************************************
|
|
||||||
;*****************************************
|
|
||||||
; ERRORS
|
|
||||||
;*****************************************
|
|
||||||
; 0 - ƒ‹€‚<E282AC>€Ÿ <20><>Ž‚…<E2809A>Š€ <20><>Žƒ<C5BD>€ŒŒ›
|
|
||||||
; 1 - <20>…‚…<E2809A><E280A6>›‰ ”Ž<E2809D>Œ€’ ˆŒ…<C592>ˆ
|
|
||||||
; 2 - ŠŽ<C5A0>…– Š€’€‹Žƒ€
|
|
||||||
;
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,31 +1,35 @@
|
|||||||
;
|
File_Start DEFL $
|
||||||
; for INCLUDE
|
DISPLAY "===================================================="
|
||||||
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
|
|
||||||
|
;********************************************
|
||||||
; MS-DOS system
|
; MS-DOS system
|
||||||
;
|
|
||||||
;********************************************
|
;********************************************
|
||||||
; MS-DOS utilites
|
; MS-DOS utilites
|
||||||
;********************************************
|
;********************************************
|
||||||
|
|
||||||
;************************************************
|
|
||||||
;* <09>à®£à ¬¬ ç⥨ï/§ ¯¨á¨ MS-DOS ¤¨áª®¢ *
|
|
||||||
;* 1. €¤à¥á ¡ãä¥à - HL *
|
|
||||||
;* 2. <20>®¬¥à ᥪâ®à - DE *
|
|
||||||
;* 3. —¨á«® ᥪâ®à®¢ - B *
|
|
||||||
;* 4. Š®¬ ¤ - C *
|
|
||||||
;* 5. ‘âà ¨æ Ž‡“ - A *
|
|
||||||
;************************************************
|
|
||||||
|
|
||||||
HDD_REDIR:
|
|
||||||
POP AF
|
|
||||||
CALL HD_CMD
|
|
||||||
RET NC
|
|
||||||
JP HDD_ERROR
|
|
||||||
|
|
||||||
MSD_R_W_UT:
|
MSD_R_W_UT:
|
||||||
PUSH AF
|
PUSH AF
|
||||||
CALL DISK_REDIR
|
CALL DISK_REDIR
|
||||||
CP 40H
|
CP #40
|
||||||
JR NC,HDD_REDIR
|
JR C,.NOT_HDD
|
||||||
|
;************************************************
|
||||||
|
;* <20>®¤¯à®£à ¬¬ ç⥨ï/§ ¯¨á¨ MS-DOS ¤¨áª®¢ *
|
||||||
|
;* 1. €¤à¥á ¡ãä¥à - HL *
|
||||||
|
;* 2. <20>®¬¥à ᥪâ®à - DE *
|
||||||
|
;* 3. —¨á«® ᥪâ®à®¢ - B *
|
||||||
|
;* 4. Š®¬ ¤ - C *
|
||||||
|
;* 5. ‘âà ¨æ Ž‡“ - A *
|
||||||
|
;************************************************
|
||||||
|
.HDD: POP AF
|
||||||
|
;!TEST 06/01/2024 ã¡¨à ¥¬ «¨è¨¥ ⥫®¤¢¨¦¥¨ï
|
||||||
|
;CALL HD_CMD
|
||||||
|
SET 6,C
|
||||||
|
CALL EXP_FNS
|
||||||
|
;
|
||||||
|
RET NC
|
||||||
|
JP HDD_ERROR
|
||||||
|
;************************************************
|
||||||
|
.NOT_HDD:
|
||||||
POP AF
|
POP AF
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,C
|
LD A,C
|
||||||
@ -51,7 +55,7 @@ MSD_R_W_UT:
|
|||||||
; EX (SP),HL
|
; EX (SP),HL
|
||||||
; POP IX
|
; POP IX
|
||||||
; LD C,12H
|
; LD C,12H
|
||||||
; LD A,(OPER_DISK)
|
; LD A,(ZX_VARS.OPER_DISK)
|
||||||
; DI
|
; DI
|
||||||
; PUSH IY
|
; PUSH IY
|
||||||
; CALL HD_CMD
|
; CALL HD_CMD
|
||||||
@ -72,7 +76,7 @@ MSD_R_W_UT:
|
|||||||
; EX (SP),HL
|
; EX (SP),HL
|
||||||
; POP IX
|
; POP IX
|
||||||
; LD C,13H
|
; LD C,13H
|
||||||
; LD A,(OPER_DISK)
|
; LD A,(ZX_VARS.OPER_DISK)
|
||||||
; DI
|
; DI
|
||||||
; PUSH IY
|
; PUSH IY
|
||||||
; CALL HD_CMD
|
; CALL HD_CMD
|
||||||
@ -92,45 +96,51 @@ MSD_R_W_UT:
|
|||||||
|
|
||||||
MSD_cmd4:
|
MSD_cmd4:
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH AF
|
;PUSH AF ;!TEST 21/2/2024
|
||||||
CALL RESET_WG
|
CALL RESET_WG
|
||||||
POP AF
|
;POP AF ;!TEST 21/2/2024
|
||||||
POP HL
|
POP HL
|
||||||
LD B,1
|
LD B,1
|
||||||
LD DE,0
|
;!TEST 21/2/2024
|
||||||
|
; LD DE,0
|
||||||
|
XOR A
|
||||||
|
LD D,A
|
||||||
|
LD E,A
|
||||||
MSD_cmd5:
|
MSD_cmd5:
|
||||||
LD A,0
|
; LD A,0
|
||||||
LD (RD_WR_COM),A
|
; A=0
|
||||||
|
LD (ZX_VARS.RD_WR_COM),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
JR MSD_RWU1
|
JR MSD_RWU1
|
||||||
MSD_cmd6:
|
MSD_cmd6:
|
||||||
LD A,255
|
; A=0
|
||||||
LD (RD_WR_COM),A
|
;LD A,255
|
||||||
|
DEC A
|
||||||
|
LD (ZX_VARS.RD_WR_COM),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
JR MSD_RWU1
|
JR MSD_RWU1
|
||||||
|
|
||||||
PREPARE1:
|
PREPARE1:
|
||||||
LD (MED_START),A
|
LD (ZX_VARS.MED_START),A
|
||||||
LD (CONT_BUF_ADR),HL
|
LD (ZX_VARS.CONT_BUF_ADR),HL
|
||||||
DI
|
DI
|
||||||
IN A,(PAGE2)
|
IN A,(SLOT2)
|
||||||
LD C,A
|
LD C,A
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE2),A
|
OUT (SLOT2),A
|
||||||
|
|
||||||
LD A,(DS_1440-4000H)
|
LD A,(SYS_PAGE.DS_1440-4000H)
|
||||||
AND BIT_MASK_1440
|
AND SYS_PAGE.DS_1440.IS_SET
|
||||||
SET 0,A
|
SET 0,A
|
||||||
LD (DS_1440-4000H),A
|
LD (SYS_PAGE.DS_1440-4000H),A
|
||||||
LD A,C
|
LD A,C
|
||||||
OUT (PAGE2),A
|
OUT (SLOT2),A
|
||||||
EI
|
EI
|
||||||
CALL Z,RES_1440
|
CALL Z,RES_1440
|
||||||
CALL NZ,SET_1440
|
CALL NZ,SET_1440
|
||||||
|
|
||||||
CALL CALC_SECTOR
|
CALL CALC_SECTOR
|
||||||
LD (CONT_SEC),DE
|
LD (ZX_VARS.CONT_SEC),DE
|
||||||
LD A,(RD_WR_COM)
|
LD A,(ZX_VARS.RD_WR_COM)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
MSD_RWU1:
|
MSD_RWU1:
|
||||||
@ -142,79 +152,79 @@ MSD_RWU1:
|
|||||||
MSD_R_W_LOOP:
|
MSD_R_W_LOOP:
|
||||||
POP HL
|
POP HL
|
||||||
POP BC
|
POP BC
|
||||||
LD A,(MED_START)
|
LD A,(ZX_VARS.MED_START)
|
||||||
INC B
|
INC B
|
||||||
DEC B
|
DEC B
|
||||||
LD DE,(CONT_SEC)
|
LD DE,(ZX_VARS.CONT_SEC)
|
||||||
RET Z
|
RET Z
|
||||||
|
|
||||||
DEC B
|
DEC B
|
||||||
PUSH BC
|
PUSH BC
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD (CONT_BUF_ADR),HL
|
LD (ZX_VARS.CONT_BUF_ADR),HL
|
||||||
LD A,(CONT_SEC)
|
LD A,(ZX_VARS.CONT_SEC)
|
||||||
LD (SEC_NUM),A
|
LD (ZX_VARS.SEC_NUM),A
|
||||||
LD A,(CONT_TRK)
|
LD A,(ZX_VARS.CONT_TRK)
|
||||||
CALL Global_trk
|
CALL Global_trk
|
||||||
LD A,(RD_WR_COM)
|
LD A,(ZX_VARS.RD_WR_COM)
|
||||||
OR A
|
OR A
|
||||||
PUSH AF
|
PUSH AF
|
||||||
CALL Z,MSD_3F0E
|
CALL Z,MSD_3F0E
|
||||||
POP AF
|
POP AF
|
||||||
CALL NZ,MSD_3F0A
|
CALL NZ,MSD_3F0A
|
||||||
DI
|
DI
|
||||||
IN A,(PAGE2)
|
IN A,(SLOT2)
|
||||||
LD C,A
|
LD C,A
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE2),A
|
OUT (SLOT2),A
|
||||||
LD DE,(MS_BPB+SEC_SIZE-4000h)
|
LD DE,(SYS_PAGE.MS_BPB+SEC_SIZE-#4000)
|
||||||
LD A,C
|
LD A,C
|
||||||
OUT (PAGE2),A
|
OUT (SLOT2),A
|
||||||
EI
|
EI
|
||||||
POP HL
|
POP HL
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
LD A,H
|
LD A,H
|
||||||
OR L
|
OR L
|
||||||
JR NZ,MSD_NO_PAGE
|
JR NZ,MSD_NO_PAGE
|
||||||
DI
|
DI
|
||||||
IN A,(PAGE2)
|
IN A,(SLOT2)
|
||||||
LD C,A
|
LD C,A
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE2),A
|
OUT (SLOT2),A
|
||||||
LD A,(MED_START)
|
LD A,(ZX_VARS.MED_START)
|
||||||
LD HL,RAMD_FAT-4000H
|
LD HL,SYS_PAGE.RAM_TABLE-#4000
|
||||||
LD L,A
|
LD L,A
|
||||||
LD L,(HL)
|
LD L,(HL)
|
||||||
LD A,C
|
LD A,C
|
||||||
OUT (PAGE2),A
|
OUT (SLOT2),A
|
||||||
EI
|
EI
|
||||||
LD A,L
|
LD A,L
|
||||||
LD HL,0C000H
|
LD HL,#C000
|
||||||
LD (MED_START),A
|
LD (ZX_VARS.MED_START),A
|
||||||
MSD_NO_PAGE:
|
MSD_NO_PAGE:
|
||||||
LD (CONT_BUF_ADR),HL
|
LD (ZX_VARS.CONT_BUF_ADR),HL
|
||||||
PUSH HL
|
PUSH HL
|
||||||
|
|
||||||
DI
|
DI
|
||||||
IN A,(PAGE2)
|
IN A,(SLOT2)
|
||||||
LD C,A
|
LD C,A
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE2),A
|
OUT (SLOT2),A
|
||||||
LD A,(DS_1440-4000H)
|
LD A,(SYS_PAGE.DS_1440-#4000)
|
||||||
RES 0,A
|
AND %1111'1110
|
||||||
LD (DS_1440-4000H),A
|
LD (SYS_PAGE.DS_1440-#4000),A
|
||||||
LD A,(MSD_SECS-4000h)
|
LD A,(SYS_PAGE.MSD_SECS-#4000)
|
||||||
LD L,A
|
LD L,A
|
||||||
LD A,C
|
LD A,C
|
||||||
OUT (PAGE2),A
|
OUT (SLOT2),A
|
||||||
EI
|
EI
|
||||||
LD A,L
|
LD A,L
|
||||||
LD HL,CONT_SEC
|
LD HL,ZX_VARS.CONT_SEC
|
||||||
INC (HL)
|
INC (HL)
|
||||||
CP (HL)
|
CP (HL)
|
||||||
JP NZ,MSD_R_W_LOOP
|
JP NZ,MSD_R_W_LOOP
|
||||||
LD (HL),0
|
LD (HL),0
|
||||||
LD HL,CONT_TRK
|
LD HL,ZX_VARS.CONT_TRK
|
||||||
INC (HL)
|
INC (HL)
|
||||||
JP MSD_R_W_LOOP
|
JP MSD_R_W_LOOP
|
||||||
;*****************************************
|
;*****************************************
|
||||||
@ -226,30 +236,30 @@ MSD_3F0A:
|
|||||||
MSD_3F0E:
|
MSD_3F0E:
|
||||||
LD A,128
|
LD A,128
|
||||||
MSD_3F10:
|
MSD_3F10:
|
||||||
LD (COMAND_WG),A
|
LD (ZX_VARS.COMAND_WG),A
|
||||||
MSD_3F13:
|
MSD_3F13:
|
||||||
LD D,5 ; —ˆ‘‹Ž <20>Ž‚’Ž<E28099>…<EFBFBD>ˆ‰
|
LD D,5 ; —ˆ‘‹Ž <20>Ž‚’Ž<E28099>…<EFBFBD>ˆ‰
|
||||||
MSD_3F15:
|
MSD_3F15:
|
||||||
PUSH DE
|
PUSH DE
|
||||||
PUSH IX
|
PUSH IX
|
||||||
DI
|
DI
|
||||||
IN A,(PAGE3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,(MED_START)
|
LD A,(ZX_VARS.MED_START)
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
AND A
|
AND A
|
||||||
JR Z,NO_OFF_SCR
|
JR Z,NO_OFF_SCR
|
||||||
LD A,0C0H
|
LD A,#C0
|
||||||
OUT (RGADR),A
|
OUT (RGADR),A
|
||||||
NO_OFF_SCR:
|
NO_OFF_SCR:
|
||||||
LD IX,MSD_RET_ADR
|
LD IX,MSD_RET_ADR
|
||||||
LD A,(SEC_NUM)
|
LD A,(ZX_VARS.SEC_NUM)
|
||||||
INC A
|
INC A
|
||||||
OUT (WG_SEC),A
|
OUT (FDC_93.Sector),A
|
||||||
LD HL,(CONT_BUF_ADR)
|
LD HL,(ZX_VARS.CONT_BUF_ADR)
|
||||||
LD C,127
|
LD C,127
|
||||||
LD A,(COMAND_WG)
|
LD A,(ZX_VARS.COMAND_WG)
|
||||||
OUT (WG_COM),A
|
OUT (FDC_93.Command),A
|
||||||
CP 160
|
CP 160
|
||||||
JP Z,MSD_3FBA ; ‡€<E280A1>ˆ‘œ ‘…Š’Ž<E28099>€
|
JP Z,MSD_3FBA ; ‡€<E280A1>ˆ‘œ ‘…Š’Ž<E28099>€
|
||||||
JP MSD_3FD5 ; —’…<E28099>ˆ… ‘…Š’Ž<E28099>€
|
JP MSD_3FD5 ; —’…<E28099>ˆ… ‘…Š’Ž<E28099>€
|
||||||
@ -257,16 +267,15 @@ MSD_RET_ADR:
|
|||||||
LD A,0
|
LD A,0
|
||||||
OUT (RGADR),A
|
OUT (RGADR),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
POP IX
|
POP IX
|
||||||
POP DE
|
POP DE
|
||||||
EI
|
EI
|
||||||
IN A,(WG_COM)
|
IN A,(FDC_93.Command)
|
||||||
LD B,A
|
LD B,A
|
||||||
AND 127
|
AND 127
|
||||||
RET Z
|
RET Z
|
||||||
|
;MSD_3F39:
|
||||||
MSD_3F39:
|
|
||||||
LD HL,READ_ONLY_MSG
|
LD HL,READ_ONLY_MSG
|
||||||
AND '@'
|
AND '@'
|
||||||
JR NZ,MSD_3F4B
|
JR NZ,MSD_3F4B
|
||||||
@ -281,7 +290,7 @@ MSD_3F48:
|
|||||||
LD HL,DISK_ERROR_MSG
|
LD HL,DISK_ERROR_MSG
|
||||||
MSD_3F4B:
|
MSD_3F4B:
|
||||||
LD A,208
|
LD A,208
|
||||||
OUT (WG_COM),A
|
OUT (FDC_93.Command),A
|
||||||
LD A,B
|
LD A,B
|
||||||
AND 1
|
AND 1
|
||||||
JP NZ,AUTO_3EE7
|
JP NZ,AUTO_3EE7
|
||||||
@ -292,11 +301,11 @@ MSD_3F4B:
|
|||||||
RST PRINT_LN
|
RST PRINT_LN
|
||||||
LD HL,AUTO_2A13
|
LD HL,AUTO_2A13
|
||||||
RST PRINT_LN
|
RST PRINT_LN
|
||||||
IN A,(WG_TRK)
|
IN A,(FDC_93.Track)
|
||||||
CALL AUTO_1DA3
|
CALL AUTO_1DA3
|
||||||
LD HL,AUTO_2A18
|
LD HL,AUTO_2A18
|
||||||
RST PRINT_LN
|
RST PRINT_LN
|
||||||
IN A,(WG_SEC)
|
IN A,(FDC_93.Sector)
|
||||||
CALL AUTO_1DA3
|
CALL AUTO_1DA3
|
||||||
LD HL,AUTO_29FE
|
LD HL,AUTO_29FE
|
||||||
RST PRINT_LN
|
RST PRINT_LN
|
||||||
@ -310,10 +319,10 @@ MSD_3F7B:
|
|||||||
JR NZ,MSD_3F7B
|
JR NZ,MSD_3F7B
|
||||||
CALL exit_No_disk
|
CALL exit_No_disk
|
||||||
LD A,7
|
LD A,7
|
||||||
LD (DOS_ERR_2),A
|
LD (ZX_VARS.DOS_ERR_2),A
|
||||||
JP AUTO_01D3
|
JP AUTO_01D3
|
||||||
MSD_3F94:
|
MSD_3F94:
|
||||||
LD A,(CONT_TRK)
|
LD A,(ZX_VARS.CONT_TRK)
|
||||||
CALL Global_trk
|
CALL Global_trk
|
||||||
CALL pause_750ms
|
CALL pause_750ms
|
||||||
JP MSD_3F13
|
JP MSD_3F13
|
||||||
@ -323,7 +332,7 @@ MSD_3FA0:
|
|||||||
CALL SWITCH_DT
|
CALL SWITCH_DT
|
||||||
PUSH DE
|
PUSH DE
|
||||||
CALL AUTO_3D98 ; RESET_WG
|
CALL AUTO_3D98 ; RESET_WG
|
||||||
LD A,(CONT_TRK)
|
LD A,(ZX_VARS.CONT_TRK)
|
||||||
CALL Global_trk ; <20>އˆ–ˆŽ<CB86>ˆ<EFBFBD>Ž‚€<E2809A>ˆ…
|
CALL Global_trk ; <20>އˆ–ˆŽ<CB86>ˆ<EFBFBD>Ž‚€<E2809A>ˆ…
|
||||||
POP DE
|
POP DE
|
||||||
JP MSD_3F15
|
JP MSD_3F15
|
||||||
@ -331,25 +340,25 @@ MSD_3FA0:
|
|||||||
|
|
||||||
SWITCH_DT:
|
SWITCH_DT:
|
||||||
DI
|
DI
|
||||||
IN A,(PAGE2)
|
IN A,(SLOT2)
|
||||||
LD C,A
|
LD C,A
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE2),A
|
OUT (SLOT2),A
|
||||||
LD A,(DS_1440-4000H)
|
LD A,(SYS_PAGE.DS_1440-4000H)
|
||||||
BIT 0,A
|
BIT 0,A
|
||||||
JR Z,NO_SW_DT
|
JR Z,NO_SW_DT
|
||||||
XOR BIT_MASK_1440
|
XOR SYS_PAGE.DS_1440.IS_SET
|
||||||
LD (DS_1440-4000H),A
|
LD (SYS_PAGE.DS_1440-4000H),A
|
||||||
AND BIT_MASK_1440
|
AND SYS_PAGE.DS_1440.IS_SET
|
||||||
LD A,C
|
LD A,C
|
||||||
OUT (PAGE2),A
|
OUT (SLOT2),A
|
||||||
EI
|
EI
|
||||||
CALL Z,RES_1440
|
JR Z,RES_1440
|
||||||
CALL NZ,SET_1440
|
JR SET_1440
|
||||||
RET
|
;
|
||||||
NO_SW_DT:
|
NO_SW_DT:
|
||||||
LD A,C
|
LD A,C
|
||||||
OUT (PAGE2),A
|
OUT (SLOT2),A
|
||||||
EI
|
EI
|
||||||
RET
|
RET
|
||||||
|
|
||||||
@ -359,8 +368,8 @@ NO_SW_DT:
|
|||||||
MSD_3FBA:
|
MSD_3FBA:
|
||||||
LD B,4
|
LD B,4
|
||||||
MSD_3FBC:
|
MSD_3FBC:
|
||||||
IN A,(P_DOS_FF)
|
IN A,(FDC_93.DrvCTRL)
|
||||||
AND 192
|
AND #C0
|
||||||
JR NZ,MSD_3FD1
|
JR NZ,MSD_3FD1
|
||||||
INC DE
|
INC DE
|
||||||
LD A,E
|
LD A,E
|
||||||
@ -370,8 +379,8 @@ MSD_3FBC:
|
|||||||
MSD_RET_IX:
|
MSD_RET_IX:
|
||||||
JP (IX)
|
JP (IX)
|
||||||
MSD_3FCA:
|
MSD_3FCA:
|
||||||
IN A,(P_DOS_FF)
|
IN A,(FDC_93.DrvCTRL)
|
||||||
AND 192
|
AND #C0
|
||||||
JR Z,MSD_3FCA
|
JR Z,MSD_3FCA
|
||||||
JP M,MSD_RET_IX
|
JP M,MSD_RET_IX
|
||||||
MSD_3FD1:
|
MSD_3FD1:
|
||||||
@ -383,8 +392,8 @@ MSD_3FD1:
|
|||||||
MSD_3FD5:
|
MSD_3FD5:
|
||||||
LD B,4
|
LD B,4
|
||||||
MSD_3FD7:
|
MSD_3FD7:
|
||||||
IN A,(P_DOS_FF)
|
IN A,(FDC_93.DrvCTRL)
|
||||||
AND 192
|
AND #C0
|
||||||
JR NZ,MSD_3FEC
|
JR NZ,MSD_3FEC
|
||||||
INC DE
|
INC DE
|
||||||
LD A,E
|
LD A,E
|
||||||
@ -394,8 +403,8 @@ MSD_3FD7:
|
|||||||
MSD_RET_IX2:
|
MSD_RET_IX2:
|
||||||
JP (IX)
|
JP (IX)
|
||||||
MSD_3FE5:
|
MSD_3FE5:
|
||||||
IN A,(P_DOS_FF)
|
IN A,(FDC_93.DrvCTRL)
|
||||||
AND 192
|
AND #C0
|
||||||
JR Z,MSD_3FE5
|
JR Z,MSD_3FE5
|
||||||
JP M,MSD_RET_IX2
|
JP M,MSD_RET_IX2
|
||||||
MSD_3FEC:
|
MSD_3FEC:
|
||||||
@ -406,288 +415,283 @@ MSD_3FEC:
|
|||||||
;****************************************
|
;****************************************
|
||||||
|
|
||||||
RES_1440:
|
RES_1440:
|
||||||
LD A,01h
|
LD A,FDD_Density.SET_720
|
||||||
OUT (0BDh),A
|
OUT (FDD_Density),A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
SET_1440:
|
SET_1440:
|
||||||
LD A,21h
|
LD A,FDD_Density.SET_1440
|
||||||
OUT (0BDh),A
|
OUT (FDD_Density),A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
READ_BPB:
|
READ_BPB:
|
||||||
CALL DISK_REDIR
|
CALL DISK_REDIR
|
||||||
CP 40H
|
; LD C,BIOS.GET_DISK_REDIR
|
||||||
JR NC,HDD_REDIR2
|
; CALL EXP_FNS
|
||||||
|
CP #40
|
||||||
|
JR NC,.HDD
|
||||||
CP 4
|
CP 4
|
||||||
JP NC,ERROR_MSDOS
|
JP NC,ERROR_MSG
|
||||||
|
;
|
||||||
CALL SET_DISK
|
CALL SET_DISK
|
||||||
|
;
|
||||||
CALL MAIN_BPB
|
CALL .MAIN
|
||||||
RET NC
|
RET NC
|
||||||
JP ERROR_MSDOS
|
JP ERROR_MSG
|
||||||
|
;
|
||||||
HDD_REDIR2:
|
.HDD: CALL .MAIN
|
||||||
|
|
||||||
CALL MAIN_BPB
|
|
||||||
RET NC
|
RET NC
|
||||||
|
; old hdd
|
||||||
SPACIAL_BPB:
|
|
||||||
LD IX,0
|
LD IX,0
|
||||||
LD DE,63
|
LD DE,63 ;!HARDCODE
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
LD HL,MS_BPB
|
LD HL,SYS_PAGE.MS_BPB
|
||||||
LD C,5
|
;
|
||||||
LD B,1
|
LD BC,256*1 + TRDOS_ROM_CMD.READ
|
||||||
CALL MSD_R_W_UT
|
CALL MSD_R_W_UT
|
||||||
CALL BPB_PARAMS
|
;
|
||||||
|
CALL .PARAMS
|
||||||
RET NC
|
RET NC
|
||||||
JP ERROR_MSDOS
|
JP ERROR_MSG
|
||||||
|
;
|
||||||
|
.MAIN: LD A,SYS_PAGE
|
||||||
|
LD HL,SYS_PAGE.MS_BPB
|
||||||
|
LD C,TRDOS_ROM_CMD.READ_BPB
|
||||||
|
CALL MSD_R_W_UT
|
||||||
|
|
||||||
MAIN_BPB:
|
;CALL BPB_PARAMS
|
||||||
LD IX,0
|
;RET
|
||||||
LD DE,0
|
;
|
||||||
LD A,SYS_PAGE
|
; LD C,18H
|
||||||
LD HL,MS_BPB
|
; LD A,(ZX_VARS.OPER_DISK)
|
||||||
LD C,4
|
; CALL HD_CMD
|
||||||
LD B,1
|
; ;
|
||||||
CALL MSD_R_W_UT
|
; DI
|
||||||
CALL BPB_PARAMS
|
; IN A,(SLOT3)
|
||||||
RET
|
; EX AF,AF'
|
||||||
|
; LD A,SYS_PAGE
|
||||||
; LD C,18H
|
; OUT (SLOT3),A
|
||||||
; LD A,(OPER_DISK)
|
; ;
|
||||||
; CALL HD_CMD
|
; LD A,(SYS_PAGE.MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ â४
|
||||||
|
; LD L,A
|
||||||
; DI
|
; ;
|
||||||
; IN A,(PAGE3)
|
; EX AF,AF'
|
||||||
; EX AF,AF'
|
; OUT (SLOT3),A
|
||||||
; LD A,SYS_PAGE
|
; EI
|
||||||
; OUT (PAGE3),A
|
; ;
|
||||||
;
|
; LD A,(ZX_VARS.OPER_DISK)
|
||||||
; LD A,(MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ â४
|
; LD C,19H
|
||||||
; LD L,A
|
; CALL HD_CMD
|
||||||
;
|
|
||||||
; EX AF,AF'
|
|
||||||
; OUT (PAGE3),A
|
|
||||||
; EI
|
|
||||||
;
|
|
||||||
; LD A,(OPER_DISK)
|
|
||||||
; LD C,19H
|
|
||||||
; CALL HD_CMD
|
|
||||||
|
|
||||||
BPB_PARAMS:
|
|
||||||
|
|
||||||
|
.PARAMS:
|
||||||
DI
|
DI
|
||||||
IN A,(PAGE3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
LD A,(MS_BPB+FORM_CODE)
|
LD A,(SYS_PAGE.MS_BPB+FORM_CODE)
|
||||||
CP 0F0H
|
CP #F0
|
||||||
JP C,ERROR_BPB
|
JP C,.ERROR_BPB
|
||||||
|
|
||||||
LD HL,MS_BPB+FAT_ID
|
LD DE,SYS_PAGE.MS_BPB+FAT_ID
|
||||||
LD DE,FAT1_MSG
|
LD HL,.FAT1_MSG
|
||||||
LD B,4
|
LD B,4
|
||||||
R_BPB_L1:
|
.L1: LD A,(DE)
|
||||||
LD A,(DE)
|
|
||||||
CP ' '
|
CP ' '
|
||||||
JR NZ,R_BPB_L11
|
JR NZ,.L11
|
||||||
INC DE
|
INC DE
|
||||||
JR R_BPB_L1
|
JR .L1
|
||||||
R_BPB_L11:
|
.L11: CP (HL)
|
||||||
CP (HL)
|
JR NZ,.PC_DOS
|
||||||
JR NZ,PC_DOS_BPB
|
|
||||||
|
|
||||||
INC HL
|
INC HL
|
||||||
INC DE
|
INC DE
|
||||||
DJNZ R_BPB_L1
|
DJNZ .L1
|
||||||
LD A,(HL)
|
LD A,(DE)
|
||||||
CP '6'
|
CP '6'
|
||||||
LD HL,81FFH ; FAT16 ä« £
|
LD HL,#81FF ; FAT16 ä« £
|
||||||
JR Z,BPB_FAT
|
JR Z,.FAT
|
||||||
CP '2'
|
CP '2'
|
||||||
JP NZ,ERROR_BPB
|
JP NZ,.ERROR_BPB
|
||||||
|
|
||||||
PC_DOS_BPB:
|
.PC_DOS:
|
||||||
LD HL,01FFH ; FAT12 ä« £
|
LD HL,#01FF ; FAT12 ä« £
|
||||||
BPB_FAT:
|
.FAT: LD (SYS_PAGE.FAT_FLAG),HL
|
||||||
LD (FAT_FLAG),HL
|
|
||||||
|
|
||||||
LD A,(MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ â४
|
LD A,(SYS_PAGE.MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ â४
|
||||||
LD (MSD_SECS),A
|
LD (SYS_PAGE.MSD_SECS),A
|
||||||
|
|
||||||
BIT 7,H
|
; BIT 7,H
|
||||||
|
; LD IX,0
|
||||||
|
; LD HL,0 ; ¢ëç¨á«¨âì ç «ìë© á¥ªâ®à FAT
|
||||||
|
; JR Z,.NO_LD_SPECIAL
|
||||||
|
|
||||||
LD IX,0
|
LD IX,(SYS_PAGE.MS_BPB+SPECIAL_SECS)
|
||||||
LD HL,0 ; ¢ëç¨á«¨âì ç «ìë© á¥ªâ®à FAT
|
LD HL,(SYS_PAGE.MS_BPB+SPECIAL_SECS+2)
|
||||||
|
|
||||||
JR Z,NO_LD_SPECIAL
|
|
||||||
LD IX,(MS_BPB+SPECIAL_SECS)
|
|
||||||
LD HL,(MS_BPB+SPECIAL_SECS+2)
|
|
||||||
NO_LD_SPECIAL:
|
|
||||||
|
|
||||||
|
;.NO_LD_SPECIAL:
|
||||||
LD BC,0
|
LD BC,0
|
||||||
LD DE,(MS_BPB+RESERV_SECS)
|
LD DE,(SYS_PAGE.MS_BPB+RESERV_SECS)
|
||||||
|
|
||||||
ADD IX,DE
|
ADD IX,DE
|
||||||
ADC HL,BC
|
ADC HL,BC
|
||||||
|
|
||||||
LD (MSD_FAT_SEC),IX ; ç «ìë© á¥ªâ®à FAT
|
LD (SYS_PAGE.MSD_FAT_SEC),IX ; ç «ìë© á¥ªâ®à FAT
|
||||||
LD (MSD_FAT_SEC2),HL ; ç «ìë© á¥ªâ®à FAT
|
LD (SYS_PAGE.MSD_FAT_SEC2),HL ; ç «ìë© á¥ªâ®à FAT
|
||||||
|
|
||||||
LD DE,(MS_BPB+S_P_F) ; ç¨á«® ᥪâ®à®¢ ¢ FAT
|
LD DE,(SYS_PAGE.MS_BPB+S_P_F) ; ç¨á«® ᥪâ®à®¢ ¢ FAT
|
||||||
LD BC,0
|
;LD BC,0
|
||||||
|
|
||||||
LD A,(MS_BPB+FATS_NUM) ; ª®«¨ç¥á⢮ FATs
|
LD A,(SYS_PAGE.MS_BPB+FATS_NUM) ; ª®«¨ç¥á⢮ FATs
|
||||||
NEXT_ADD:
|
.NEXT_ADD:
|
||||||
ADD IX,DE
|
ADD IX,DE
|
||||||
ADC HL,BC
|
ADC HL,BC
|
||||||
DEC A
|
DEC A
|
||||||
JR NZ,NEXT_ADD
|
JR NZ,.NEXT_ADD
|
||||||
|
|
||||||
LD (MSD_CAT_SEC),IX ; ç «ìë© á¥ªâ®à DIR
|
LD (SYS_PAGE.MSD_CAT_SEC),IX ; ç «ìë© á¥ªâ®à DIR
|
||||||
LD (MSD_CAT_SEC2),HL ; ç «ìë© á¥ªâ®à DIR
|
LD (SYS_PAGE.MSD_CAT_SEC2),HL ; ç «ìë© á¥ªâ®à DIR
|
||||||
|
|
||||||
LD BC,(MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à
|
LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à
|
||||||
|
LD A,B
|
||||||
RL C
|
RL C
|
||||||
RL B
|
RLA
|
||||||
RL C
|
RL C
|
||||||
RL B
|
RLA
|
||||||
RL C
|
RL C
|
||||||
RL B
|
RLA
|
||||||
LD C,B
|
LD C,A
|
||||||
LD B,0 ; BC - ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
|
LD B,0 ; BC - ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
|
||||||
LD A,C
|
LD (SYS_PAGE.FilesPerSector),A
|
||||||
LD (F_P_S),A
|
|
||||||
|
|
||||||
LD DE,(MS_BPB+FLS_NUM) ; —¨á«® ä ©«®¢ëå § ¯¨á¥©
|
LD DE,(SYS_PAGE.MS_BPB+FLS_NUM) ; —¨á«® ä ©«®¢ëå § ¯¨á¥©
|
||||||
|
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
DEC HL
|
DEC HL
|
||||||
XOR A
|
XOR A
|
||||||
NEXT_ADD2:
|
.NEXT_ADD2:
|
||||||
INC A
|
INC A
|
||||||
JR Z,ERROR_BPB
|
JR Z,.ERROR_BPB
|
||||||
SBC HL,BC
|
SBC HL,BC
|
||||||
JR NC,NEXT_ADD2
|
JR NC,.NEXT_ADD2
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
|
|
||||||
LD E,A ; A - ç¨á«® ᥪâ®à®¢ ¢ DIR
|
LD E,A ; A - ç¨á«® ᥪâ®à®¢ ¢ DIR
|
||||||
LD D,0
|
|
||||||
LD BC,0
|
LD BC,0
|
||||||
LD (S_P_C),A
|
LD D,B
|
||||||
|
LD (SYS_PAGE.SectorsPerCluster),A
|
||||||
|
|
||||||
ADD IX,DE ; <20> ç «® DATA area
|
ADD IX,DE ; <20> ç «® DATA area
|
||||||
ADC HL,BC
|
ADC HL,BC
|
||||||
|
|
||||||
LD (MSD_DAT_SEC),IX
|
LD (SYS_PAGE.MSD_DAT_SEC),IX
|
||||||
LD (MSD_DAT_SEC2),HL
|
LD (SYS_PAGE.MSD_DAT_SEC2),HL
|
||||||
|
|
||||||
LD BC,(MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à
|
LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à
|
||||||
LD HL,0
|
; D = 0
|
||||||
LD A,(MS_BPB+CLAST_SIZE)
|
LD H,D
|
||||||
|
LD L,D
|
||||||
|
LD E,D
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
|
||||||
LD D,A
|
LD D,A
|
||||||
LD A,0
|
XOR A
|
||||||
NEXT_ADD3:
|
.NEXT_ADD3:
|
||||||
ADD HL,BC ; ‚ëç¨á«¥¨¥ ¤«¨ë ª« áâ¥à
|
ADD HL,BC ; ‚ëç¨á«¥¨¥ ¤«¨ë ª« áâ¥à
|
||||||
ADC A,0
|
ADC A,E
|
||||||
DEC D
|
DEC D
|
||||||
JR NZ,NEXT_ADD3
|
JR NZ,.NEXT_ADD3
|
||||||
|
|
||||||
LD (CLASTER_LEN),HL
|
LD (SYS_PAGE.CLUSTER_LEN),HL
|
||||||
LD B,0
|
LD B,E
|
||||||
LD C,A
|
LD C,A
|
||||||
LD (CLASTER_LEN2),BC
|
LD (SYS_PAGE.CLUSTER_LEN2),BC
|
||||||
|
;
|
||||||
LD HL,0
|
; DE=0
|
||||||
LD BC,(MS_BPB+S_P_T)
|
EX DE,HL ;LD HL,0
|
||||||
LD A,(MS_BPB+H_P_S)
|
LD BC,(SYS_PAGE.MS_BPB+S_P_T)
|
||||||
BPB_L1: ; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž ‘…Š’Ž<E28099>Ž‚ <20>€ –ˆ‹ˆ<E280B9>„<EFBFBD>
|
LD A,(SYS_PAGE.MS_BPB+H_P_S)
|
||||||
|
.BPB_L1:; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž ‘…Š’Ž<E28099>Ž‚ <20>€ –ˆ‹ˆ<E280B9>„<EFBFBD>
|
||||||
ADD HL,BC
|
ADD HL,BC
|
||||||
DEC A
|
DEC A
|
||||||
JR NZ,BPB_L1
|
JR NZ,.BPB_L1
|
||||||
LD (S_X_H),HL
|
LD (SYS_PAGE.S_X_H),HL
|
||||||
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
EI
|
CALL RESTORE_CURRENT_DIR ; [x] new tr-hdd
|
||||||
AND A
|
AND A
|
||||||
|
EI
|
||||||
RET
|
RET
|
||||||
|
.ERROR_BPB:
|
||||||
ERROR_BPB:
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
SCF
|
SCF
|
||||||
EI
|
EI
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
; .ERROR_MSDOS:
|
||||||
ERROR_MSDOS:
|
; LD HL,MSG_3
|
||||||
LD HL,MSG_3
|
; JP AUTO_03E4
|
||||||
JP AUTO_03E4
|
;
|
||||||
|
.FAT1_MSG:
|
||||||
FAT1_MSG: DB 'FAT1'
|
DB 'FAT1'
|
||||||
;********************************************
|
;********************************************
|
||||||
READ_NEXT_DIR:
|
READ_NEXT_DIR:
|
||||||
DI
|
DI
|
||||||
IN A,(PAGE3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
LD DE,(MSD_CONT_SEC)
|
LD DE,(SYS_PAGE.MSD_CONT_SEC)
|
||||||
LD IX,(MSD_CONT_SEC2)
|
LD IX,(SYS_PAGE.MSD_CONT_SEC2)
|
||||||
JR READ_NEXT2
|
JR READ_NEXT2
|
||||||
;********************************************
|
;********************************************
|
||||||
READ_1ST_DIR:
|
READ_1ST_DIR:
|
||||||
DI
|
DI
|
||||||
IN A,(PAGE3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
LD IX,(MSD_CAT_SEC2) ;
|
LD IX,(SYS_PAGE.MSD_CAT_SEC2)
|
||||||
LD DE,(MSD_CAT_SEC) ; <20>€—€‹œ<E280B9>›‰ ‘…Š’Ž<E28099> Š€’€‹Žƒ€
|
LD DE,(SYS_PAGE.MSD_CAT_SEC) ; <20>€—€‹œ<E280B9>›‰ ‘…Š’Ž<E28099> Š€’€‹Žƒ€
|
||||||
LD (MSD_CONT_SEC),DE
|
LD (SYS_PAGE.MSD_CONT_SEC),DE
|
||||||
LD (MSD_CONT_SEC2),IX
|
LD (SYS_PAGE.MSD_CONT_SEC2),IX
|
||||||
LD A,(S_P_C) ; ‘…Š’Ž<E28099>Ž‚ ‚ Š€’€‹Žƒ…
|
LD A,(SYS_PAGE.SectorsPerCluster) ; ‘…Š’Ž<E28099>Ž‚ ‚ Š€’€‹Žƒ…
|
||||||
LD (COUNT_SEC),A
|
LD (SYS_PAGE.COUNT_SEC),A
|
||||||
READ_NEXT2:
|
READ_NEXT2:
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
; RET_PAGE3
|
; RET_PAGE3
|
||||||
EI
|
EI
|
||||||
LD HL,MS_DIR
|
LD HL,SYS_PAGE.MS_DIR
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
LD B,1
|
LD BC,256*1 + TRDOS_ROM_CMD.READ
|
||||||
LD C,5
|
|
||||||
CALL MSD_R_W_UT
|
CALL MSD_R_W_UT
|
||||||
DI
|
DI
|
||||||
IN A,(PAGE3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
LD DE,(MSD_CONT_SEC)
|
LD DE,(SYS_PAGE.MSD_CONT_SEC)
|
||||||
INC DE
|
INC DE
|
||||||
LD (MSD_CONT_SEC),DE
|
LD (SYS_PAGE.MSD_CONT_SEC),DE
|
||||||
LD A,D
|
LD A,D
|
||||||
OR E
|
OR E
|
||||||
JR NZ,READ_NEXT3
|
JR NZ,READ_NEXT3
|
||||||
LD IX,(MSD_CONT_SEC2)
|
LD IX,(SYS_PAGE.MSD_CONT_SEC2)
|
||||||
INC IX
|
INC IX
|
||||||
LD (MSD_CONT_SEC2),IX
|
LD (SYS_PAGE.MSD_CONT_SEC2),IX
|
||||||
READ_NEXT3:
|
READ_NEXT3:
|
||||||
LD A,(F_P_S) ; ”€‰‹Ž‚ ‚ ‘…Š’Ž<E28099>…
|
LD A,(SYS_PAGE.FilesPerSector) ; ”€‰‹Ž‚ ‚ ‘…Š’Ž<E28099>…
|
||||||
LD (COUNT_FL),A
|
LD (SYS_PAGE.COUNT_FL),A
|
||||||
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
; RET_PAGE3
|
; RET_PAGE3
|
||||||
EI
|
EI
|
||||||
LD HL,MS_DIR
|
LD HL,SYS_PAGE.MS_DIR
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
@ -704,11 +708,11 @@ CALC_SECT_L1:
|
|||||||
PUSH BC
|
PUSH BC
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
DI
|
DI
|
||||||
IN A,(PAGE3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
LD BC,(MS_BPB+S_P_T)
|
LD BC,(SYS_PAGE.MS_BPB+S_P_T)
|
||||||
XOR A
|
XOR A
|
||||||
LOOP_TRK:
|
LOOP_TRK:
|
||||||
SBC HL,BC
|
SBC HL,BC
|
||||||
@ -716,14 +720,14 @@ LOOP_TRK:
|
|||||||
INC A
|
INC A
|
||||||
JR NZ,LOOP_TRK
|
JR NZ,LOOP_TRK
|
||||||
POP BC
|
POP BC
|
||||||
JP ERROR_BPB
|
JP READ_BPB.ERROR_BPB
|
||||||
|
|
||||||
SEC_ENDER:
|
SEC_ENDER:
|
||||||
ADD HL,BC
|
ADD HL,BC
|
||||||
LD H,A ; ’<>…Š
|
LD H,A ; ’<>…Š
|
||||||
; LD L,L ; ‘…Š’Ž<E28099>
|
; LD L,L ; ‘…Š’Ž<E28099>
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
EI
|
EI
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
POP BC
|
POP BC
|
||||||
@ -732,8 +736,8 @@ SEC_ENDER:
|
|||||||
;************************************************
|
;************************************************
|
||||||
|
|
||||||
REDIR_LINE_CODING:
|
REDIR_LINE_CODING:
|
||||||
LD (MED_START),HL
|
LD (ZX_VARS.MED_START),HL
|
||||||
LD HL,(DOS_CH_ADR)
|
LD HL,(ZX_VARS.DOS_CH_ADR)
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
CP '/'
|
CP '/'
|
||||||
RET Z
|
RET Z
|
||||||
@ -751,18 +755,19 @@ PRINT_HEX_SYM:
|
|||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
PUSH BC
|
PUSH BC
|
||||||
AND 0FH
|
AND #0F
|
||||||
ADD A,'0'
|
ADD A,'0'
|
||||||
CP '9'+1
|
CP '9'+1
|
||||||
JR C,NO_ADD
|
JR C,NO_ADD
|
||||||
ADD A,7
|
ADD A,7
|
||||||
NO_ADD:
|
NO_ADD:
|
||||||
RST 10H
|
RST #10
|
||||||
POP BC
|
POP BC
|
||||||
POP DE
|
POP DE
|
||||||
POP HL
|
POP HL
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;*******************************************
|
;*******************************************
|
||||||
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
|
DISPLAY "TR_MSD_S.ASZ size: ",/A,$-File_Start
|
||||||
|
DISPLAY "===================================================="
|
||||||
|
|
||||||
|
|||||||
@ -1,13 +1,16 @@
|
|||||||
|
File_Start DEFL $
|
||||||
|
DISPLAY "===================================================="
|
||||||
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
|
|
||||||
|
DEFINE NEW_RAMDRV_READ 1
|
||||||
|
|
||||||
DISK_REDIR:
|
DISK_REDIR:
|
||||||
PUSH HL
|
;PUSH HL
|
||||||
PUSH BC
|
PUSH BC
|
||||||
LD A,(OPER_DISK)
|
LD C,BIOS.GET_DISK_REDIR
|
||||||
AND 3
|
|
||||||
LD C,0CFH
|
|
||||||
CALL EXP_FNS
|
CALL EXP_FNS
|
||||||
EI
|
|
||||||
POP BC
|
POP BC
|
||||||
POP HL
|
;POP HL
|
||||||
RET
|
RET
|
||||||
|
|
||||||
R_W_REDIR:
|
R_W_REDIR:
|
||||||
@ -21,7 +24,7 @@ ERROR_DISK:
|
|||||||
|
|
||||||
RECALL_1E70:
|
RECALL_1E70:
|
||||||
CALL RES_1440
|
CALL RES_1440
|
||||||
LD A,(RD_WR_COM)
|
LD A,(ZX_VARS.RD_WR_COM)
|
||||||
PUSH BC
|
PUSH BC
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL READ_TRK_NUM
|
CALL READ_TRK_NUM
|
||||||
@ -35,27 +38,211 @@ RECALL_RAMD:
|
|||||||
JR Z,ERROR_DISK
|
JR Z,ERROR_DISK
|
||||||
JP READ_WRITE_RAMD
|
JP READ_WRITE_RAMD
|
||||||
|
|
||||||
RECALL_MSD:
|
; RECALL_MSD:
|
||||||
JR ERROR_DISK ; ¯¥à¥å®¤ ®è¨¡ªã ¤¨áª
|
; JR ERROR_DISK ; ¯¥à¥å®¤ ®è¨¡ªã ¤¨áª
|
||||||
|
|
||||||
TEST_RAMD:
|
TEST_RAMD:
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD C,0CEH
|
LD C,BIOS.GET_RAMD_ST
|
||||||
CALL EXP_FNS
|
CALL EXP_FNS
|
||||||
EI
|
;!TEST 06/01/2024 á®åà 塞 á®áâ®ï¨¥ ¯à¥àë¢ ¨© § 祬-â®
|
||||||
|
EI
|
||||||
|
;
|
||||||
POP HL
|
POP HL
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
|
||||||
; º RD/WR SECTOR HL - BUFER º\
|
|
||||||
; º CONT_SEC - SEC/TRK FOR READ/WRITE º\
|
|
||||||
; º COM_RD_WR - ª®¬ ¤ ç⥨¥/§ ¯¨áì º\
|
|
||||||
; º 0 - ç⥨¥, 255 - § ¯¨áì º\
|
|
||||||
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
|
|
||||||
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
|
|
||||||
|
|
||||||
READ_WRITE_RAMD:
|
RAMD_X12: ; ¯à®¢¥àª ¤¨áª
|
||||||
|
LD (ZX_VARS.OPER_DISK),A
|
||||||
|
CALL DISK_REDIR
|
||||||
|
CP 4
|
||||||
|
JR C,X_AUTO_3DCE
|
||||||
|
CP 20
|
||||||
|
RET C
|
||||||
|
; JR C,RAMD_TEST
|
||||||
|
;NO_DISK2:
|
||||||
|
JP AUTO_3EE7 ; NO_DISK
|
||||||
|
|
||||||
|
X_AUTO_3DCE:
|
||||||
|
CALL RES_1440
|
||||||
|
LD A,(ZX_VARS.OPER_DISK)
|
||||||
|
JP AUTO_3DCE
|
||||||
|
|
||||||
|
;*************************************
|
||||||
|
RAMD_X14: ; FORMATING
|
||||||
|
CALL get_disk_type
|
||||||
|
PUSH AF
|
||||||
|
PUSH BC
|
||||||
|
PUSH HL
|
||||||
|
CALL DISK_REDIR
|
||||||
|
CP 4
|
||||||
|
JR C,DISK_FORM
|
||||||
|
CP 20
|
||||||
|
JR C,RAMD_FORMAT
|
||||||
|
JP READ_ONLY
|
||||||
|
|
||||||
|
DISK_FORM:
|
||||||
|
LD A,(ZX_VARS.MED_START+1)
|
||||||
|
CP #14
|
||||||
|
JR Z,QVICK_FORMAT
|
||||||
|
POP HL
|
||||||
|
POP BC
|
||||||
|
POP AF
|
||||||
|
JP AUTO_1EE0
|
||||||
|
|
||||||
|
QVICK_FORMAT:
|
||||||
|
POP HL
|
||||||
|
POP BC
|
||||||
|
POP AF
|
||||||
|
JR Q_FORM_1
|
||||||
|
|
||||||
|
RAMD_FORMAT:
|
||||||
|
SUB 4
|
||||||
|
|
||||||
|
CALL TEST_RAMD
|
||||||
|
JP C,READ_ONLY
|
||||||
|
CALL NZ,CLEAR_RAMD
|
||||||
|
|
||||||
|
POP HL
|
||||||
|
POP BC
|
||||||
|
POP AF
|
||||||
|
LD B,#28 ; à §¬¥à 640K
|
||||||
|
CALL DISK_REDIR
|
||||||
|
SUB 4
|
||||||
|
|
||||||
|
CALL GET_RAM_BLK ; ‚›„…‹…<E280B9>ˆ… <20>€ŒŸ’ˆ
|
||||||
|
; LD C,A ; Š‹ž— RAM-Disk
|
||||||
|
Q_FORM_1:
|
||||||
|
LD HL,ZX_VARS.BUFFER ; CLEAR DISK ZX_VARS.BUFFER
|
||||||
|
LD DE,ZX_VARS.BUFFER+1
|
||||||
|
LD BC,#FF
|
||||||
|
LD (HL),0
|
||||||
|
LDIR
|
||||||
|
|
||||||
|
LD DE,0
|
||||||
|
RAMD_F_LOOP:
|
||||||
|
LD HL,ZX_VARS.BUFFER
|
||||||
|
LD B,1
|
||||||
|
PUSH DE
|
||||||
|
CALL WRITE_DISK
|
||||||
|
POP DE
|
||||||
|
INC E
|
||||||
|
LD A,E
|
||||||
|
CP 8
|
||||||
|
JR NZ,RAMD_F_LOOP
|
||||||
|
LD HL,2544
|
||||||
|
LD A,22
|
||||||
|
JP AUTO_1F55
|
||||||
|
|
||||||
|
;*************************************
|
||||||
|
CLEAR_RAMD_X:
|
||||||
|
CALL RAMD_SYM
|
||||||
|
JR NC,CLEAR_RMD_A
|
||||||
|
DEC DE
|
||||||
|
LD A,(DE)
|
||||||
|
CP 13
|
||||||
|
SCF
|
||||||
|
RET NZ
|
||||||
|
CLEAR_RAMD:
|
||||||
|
CALL DISK_REDIR
|
||||||
|
;CLEAR_NEXT:
|
||||||
|
SUB 4
|
||||||
|
RET C
|
||||||
|
CP SYS_PAGE.RAMD_KEYS.NUM
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
|
||||||
|
CLEAR_RMD_A:
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
LD C,BIOS.FreeMemRMD
|
||||||
|
CALL EXP_FNS ; ¢ë§¢ âì äãªæ¨î
|
||||||
|
;!TEST 06/01/2024 á®åà 塞 á®áâ®ï¨¥ ¯à¥àë¢ ¨© § 祬-â®
|
||||||
|
;EI
|
||||||
|
;
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
;*********************************************************
|
||||||
|
; B - —ˆ‘‹Ž ’<>…<EFBFBD>“…Œ›• <20>‹ŽŠŽ‚, A - Š‹ž— RAM-Disk
|
||||||
|
GET_RMD_A:
|
||||||
|
GET_RAM_BLK:
|
||||||
|
LD C,BIOS.GetMemRMD
|
||||||
|
CALL EXP_FNS ; A,L - Š‹ž— RAM-Disk - ®¬¥à ¯¥à¢®£® ¡«®ª
|
||||||
|
;!TEST 06/01/2024 á®åà 塞 á®áâ®ï¨¥ ¯à¥àë¢ ¨© § 祬-â®
|
||||||
|
;EI
|
||||||
|
;
|
||||||
|
RET NC
|
||||||
|
;NO_MEM:
|
||||||
|
LD HL,NO_MEMORY
|
||||||
|
JP ERR_EXIT
|
||||||
|
|
||||||
|
;*********************************************************
|
||||||
|
READ_ONLY:
|
||||||
|
LD HL,READ_ONLY_MSG ; Read only !!
|
||||||
|
JP ERR_EXIT
|
||||||
|
|
||||||
|
FDD_SET:
|
||||||
|
LD A,(ZX_VARS.OPER_DISK)
|
||||||
|
LD B,A
|
||||||
|
LD C,BIOS.FDD_TO_DRV
|
||||||
|
;!TEST 06/01/2024 á®åà 塞 á®áâ®ï¨¥ ¯à¥àë¢ ¨© § 祬-â®
|
||||||
|
JP EXP_FNS
|
||||||
|
;CALL EXP_FNS
|
||||||
|
;EI
|
||||||
|
;RET
|
||||||
|
;
|
||||||
|
|
||||||
|
RAMD_SET:
|
||||||
|
CALL RAMD_SYM
|
||||||
|
;RET C
|
||||||
|
JP C,ERROR_MSG
|
||||||
|
RAMD_SET1:
|
||||||
|
PUSH AF
|
||||||
|
LD A,(ZX_VARS.OPER_DISK)
|
||||||
|
LD B,A
|
||||||
|
POP AF
|
||||||
|
LD C,BIOS.RAMD_TO_DRV
|
||||||
|
;!TEST 06/01/2024 á®åà 塞 á®áâ®ï¨¥ ¯à¥àë¢ ¨© § 祬-â®
|
||||||
|
JP EXP_FNS
|
||||||
|
;CALL EXP_FNS
|
||||||
|
;EI
|
||||||
|
;RET
|
||||||
|
;
|
||||||
|
|
||||||
|
RAMD_SYM:
|
||||||
|
LD A,(DE)
|
||||||
|
INC DE
|
||||||
|
CP ' '
|
||||||
|
JR Z,RAMD_SYM
|
||||||
|
AND %1101'1111
|
||||||
|
CP 'E'
|
||||||
|
RET C
|
||||||
|
SUB 'E'
|
||||||
|
CP SYS_PAGE.RAMD_KEYS.NUM
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
PUSH AF
|
||||||
|
LD A,(DE)
|
||||||
|
CP ':'
|
||||||
|
INC DE
|
||||||
|
JR Z,RAMD_SYM_OK
|
||||||
|
DEC DE
|
||||||
|
CP ' '+1
|
||||||
|
JR C,RAMD_SYM_OK
|
||||||
|
POP AF
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
RAMD_SYM_OK:
|
||||||
|
POP AF
|
||||||
|
RET
|
||||||
|
|
||||||
|
;
|
||||||
|
;======================================================================-
|
||||||
|
; READ_WRITE_RAMD:
|
||||||
;
|
;
|
||||||
; CALL DISK_REDIR
|
; CALL DISK_REDIR
|
||||||
; SUB 4
|
; SUB 4
|
||||||
@ -68,14 +255,14 @@ READ_WRITE_RAMD:
|
|||||||
; LD HL,RAMD_KEYS
|
; LD HL,RAMD_KEYS
|
||||||
; ADD A,L
|
; ADD A,L
|
||||||
; LD L,A
|
; LD L,A
|
||||||
; IN A,(PAGE3)
|
; IN A,(SLOT3)
|
||||||
; LD C,A
|
; LD C,A
|
||||||
; LD A,SYS_PAGE
|
; LD A,SYS_PAGE
|
||||||
; DI
|
; DI
|
||||||
; OUT (PAGE3),A
|
; OUT (SLOT3),A
|
||||||
; LD L,(HL)
|
; LD L,(HL)
|
||||||
; LD A,C
|
; LD A,C
|
||||||
; OUT (PAGE3),A
|
; OUT (SLOT3),A
|
||||||
; EI
|
; EI
|
||||||
; LD A,L ; 1-st block
|
; LD A,L ; 1-st block
|
||||||
; POP HL
|
; POP HL
|
||||||
@ -92,7 +279,7 @@ READ_WRITE_RAMD:
|
|||||||
; PUSH DE
|
; PUSH DE
|
||||||
; PUSH BC
|
; PUSH BC
|
||||||
;
|
;
|
||||||
; LD DE,(CONT_SEC)
|
; LD DE,(ZX_VARS.CONT_SEC)
|
||||||
; LD A,D ; ”ˆ‡ˆ—…‘Šˆ… -> ‹Žƒˆ—…‘Šˆ… !!!
|
; LD A,D ; ”ˆ‡ˆ—…‘Šˆ… -> ‹Žƒˆ—…‘Šˆ… !!!
|
||||||
; RRCA
|
; RRCA
|
||||||
; RRCA
|
; RRCA
|
||||||
@ -106,7 +293,7 @@ READ_WRITE_RAMD:
|
|||||||
; AND 0FH
|
; AND 0FH
|
||||||
; LD D,A
|
; LD D,A
|
||||||
;
|
;
|
||||||
; LD A,(RD_WR_COM)
|
; LD A,(ZX_VARS.RD_WR_COM)
|
||||||
; AND A
|
; AND A
|
||||||
; JR Z,RAMD_READ
|
; JR Z,RAMD_READ
|
||||||
; PUSH AF
|
; PUSH AF
|
||||||
@ -127,7 +314,7 @@ READ_WRITE_RAMD:
|
|||||||
; POP HL
|
; POP HL
|
||||||
; POP AF
|
; POP AF
|
||||||
; OUT (RGADR),A
|
; OUT (RGADR),A
|
||||||
; LD DE,(CONT_SEC)
|
; LD DE,(ZX_VARS.CONT_SEC)
|
||||||
;
|
;
|
||||||
; LD A,B
|
; LD A,B
|
||||||
;
|
;
|
||||||
@ -153,328 +340,259 @@ READ_WRITE_RAMD:
|
|||||||
;
|
;
|
||||||
; LD B,0
|
; LD B,0
|
||||||
;
|
;
|
||||||
; LD (CONT_SEC),DE
|
; LD (ZX_VARS.CONT_SEC),DE
|
||||||
; AND A
|
; AND A
|
||||||
; RET
|
; RET
|
||||||
;
|
;======================================================================-
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;***********************************************************************
|
||||||
|
READ_WRITE_RAMD:
|
||||||
|
IFN NEW_RAMDRV_READ
|
||||||
|
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||||
|
; º RD/WR SECTOR º\
|
||||||
|
; º HL - BUFFER º\
|
||||||
|
; º B - Number of sectors º\
|
||||||
|
; º CONT_SEC - SEC/TRK FOR READ/WRITE º\
|
||||||
|
; º RD_WR_COM - ª®¬ ¤ ç⥨¥/§ ¯¨áì º\
|
||||||
|
; º 0 - ç⥨¥, 255 - § ¯¨áì º\
|
||||||
|
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
|
||||||
|
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
|
||||||
INC B
|
INC B
|
||||||
WD_WR_RAMD_LOOP:
|
.WD_WR_RAMD_LOOP:
|
||||||
DEC B
|
DEC B
|
||||||
RET Z
|
RET Z
|
||||||
PUSH BC
|
PUSH BC
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL RD_WR_1SEC
|
CALL .RD_WR_1SEC
|
||||||
POP HL
|
POP HL
|
||||||
CALL RAMD_NEXT_SEC
|
CALL .RAMD_NEXT_SEC
|
||||||
POP BC
|
POP BC
|
||||||
JR WD_WR_RAMD_LOOP
|
JR .WD_WR_RAMD_LOOP
|
||||||
|
|
||||||
RAMD_NEXT_SEC:
|
.RAMD_NEXT_SEC:
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD HL,CONT_SEC
|
LD HL,ZX_VARS.CONT_SEC
|
||||||
LD A,16
|
LD A,16
|
||||||
INC (HL)
|
INC (HL)
|
||||||
CP (HL)
|
CP (HL)
|
||||||
JR NZ,RAMD_NEXT_1
|
JR NZ,.RAMD_NEXT_1
|
||||||
LD (HL),0
|
LD (HL),0
|
||||||
INC HL
|
INC HL
|
||||||
INC (HL)
|
INC (HL)
|
||||||
RAMD_NEXT_1:
|
.RAMD_NEXT_1:
|
||||||
POP HL
|
POP HL
|
||||||
LD BC,0100h
|
LD BC,#100
|
||||||
ADD HL,BC
|
ADD HL,BC
|
||||||
RET
|
RET
|
||||||
|
|
||||||
RD_WR_1SEC:
|
.RD_WR_1SEC:
|
||||||
LD DE,(CONT_SEC)
|
LD DE,(ZX_VARS.CONT_SEC)
|
||||||
CALL PAGE_CALC2
|
CALL .PAGE_CALC2
|
||||||
DI
|
DI
|
||||||
LD A,(RD_WR_COM)
|
LD A,(ZX_VARS.RD_WR_COM)
|
||||||
AND 0C0H
|
AND #C0
|
||||||
OUT (RGADR),A
|
OUT (RGADR),A
|
||||||
LD A,H
|
LD A,H
|
||||||
CP 0A0H
|
CP #A0
|
||||||
LD A,(RD_WR_COM)
|
LD A,(ZX_VARS.RD_WR_COM)
|
||||||
LD E,0
|
LD E,0
|
||||||
LD D,C
|
LD D,C
|
||||||
SET 6,D
|
SET 6,D
|
||||||
JR C,RD_WR_C000
|
JR C,.RD_WR_C000
|
||||||
|
;RD_WR_4000:
|
||||||
RD_WR_4000:
|
|
||||||
RES 7,D ; DE - ¤à¥á ¤ ëå RAMD
|
RES 7,D ; DE - ¤à¥á ¤ ëå RAMD
|
||||||
LD C,PAGE1
|
LD C,SLOT1
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (C),B
|
OUT (C),B
|
||||||
;****** <20>…<EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC>›• *****
|
; <20>…<EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC>›•
|
||||||
LD BC,100H
|
LD BC,#100
|
||||||
AND A
|
AND A
|
||||||
JR NZ,MOVE_NOT_EX3
|
JR NZ,.MOVE_NOT_EX3
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
MOVE_NOT_EX3:
|
.MOVE_NOT_EX3:
|
||||||
LDIR ; à ¡®â âì §¤¥áì ¦¥, ¢ TR-DOS !!!
|
LDIR ; à ¡®â âì §¤¥áì ¦¥, ¢ TR-DOS !!!
|
||||||
AND A
|
AND A
|
||||||
JR NZ,MOVE_NOT_EX4
|
JR NZ,.MOVE_NOT_EX4
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
MOVE_NOT_EX4:
|
.MOVE_NOT_EX4:
|
||||||
;*******************************
|
;*******************
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (PAGE1),A
|
OUT (SLOT1),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
; RET_PAGE1
|
; RET_PAGE1
|
||||||
MOVE_RET:
|
.MOVE_RET:
|
||||||
LD A,0
|
LD A,0
|
||||||
OUT (RGADR),A
|
OUT (RGADR),A
|
||||||
EI
|
EI
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
RD_WR_C000:
|
.RD_WR_C000:
|
||||||
SET 7,D
|
SET 7,D
|
||||||
LD C,PAGE3
|
LD C,SLOT3
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (C),B
|
OUT (C),B
|
||||||
;****** <20>…<EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC>›• *****
|
; <20>…<EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC>›•
|
||||||
LD BC,100H
|
LD BC,#100
|
||||||
AND A
|
AND A
|
||||||
JR NZ,MOVE_NOT_EX1
|
JR NZ,.MOVE_NOT_EX1
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
MOVE_NOT_EX1:
|
.MOVE_NOT_EX1:
|
||||||
LDIR ; à ¡®â âì §¤¥áì ¦¥, ¢ TR-DOS !!!
|
LDIR ; à ¡®â âì §¤¥áì ¦¥, ¢ TR-DOS !!!
|
||||||
AND A
|
AND A
|
||||||
JR NZ,MOVE_NOT_EX2
|
JR NZ,.MOVE_NOT_EX2
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
MOVE_NOT_EX2:
|
;********************
|
||||||
;*******************************
|
.MOVE_NOT_EX2:
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
; RET_PAGE3
|
; RET_PAGE3
|
||||||
JR MOVE_RET
|
JR .MOVE_RET
|
||||||
|
;
|
||||||
;**********************************************
|
.PAGE_CALC2:
|
||||||
PAGE_CALC2:
|
|
||||||
LD A,D ; ”ˆ‡ˆ—…‘Šˆ… -> ‹Žƒˆ—…‘Šˆ… !!!
|
LD A,D ; ”ˆ‡ˆ—…‘Šˆ… -> ‹Žƒˆ—…‘Šˆ… !!!
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
LD D,A
|
LD D,A
|
||||||
AND 0F0H
|
AND #F0
|
||||||
OR E
|
OR E
|
||||||
LD E,A
|
LD E,A
|
||||||
LD A,D
|
LD A,D
|
||||||
AND 0FH
|
AND #0F
|
||||||
LD D,A
|
LD D,A
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD C,98h
|
LD C,BIOS.RAMD_CALC_PAGE
|
||||||
CALL DISK_REDIR
|
CALL DISK_REDIR
|
||||||
SUB 4
|
SUB 4
|
||||||
CALL EXP_FNS ; ¢ëç¨á«¥¨¥ ¤à¥á ¨ áâà ¨æë RAM-Disk
|
CALL EXP_FNS ; ¢ëç¨á«¥¨¥ ¤à¥á ¨ áâà ¨æë RAM-Disk
|
||||||
EI
|
;!TEST 06/01/2024 á®åà 塞 á®áâ®ï¨¥ ¯à¥àë¢ ¨© § 祬-â®
|
||||||
|
;EI
|
||||||
|
;
|
||||||
LD B,A
|
LD B,A
|
||||||
LD C,H
|
LD C,H
|
||||||
POP HL
|
POP HL
|
||||||
EI
|
;EI
|
||||||
RET NC
|
RET NC
|
||||||
JP ERROR_DISK
|
JP ERROR_DISK
|
||||||
|
;********************************************
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
|
||||||
|
;********************************************
|
||||||
;*********************************************
|
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||||
RAMD_X12: ; ¯à®¢¥àª ¤¨áª
|
; º RD/WR SECTOR º\
|
||||||
LD (OPER_DISK),A
|
; º HL - BUFFER º\
|
||||||
CALL DISK_REDIR
|
; º B - Number of sectors º\
|
||||||
CP 4
|
; º CONT_SEC - SEC/TRK FOR READ/WRITE º\
|
||||||
JR C,X_AUTO_3DCE
|
; º RD_WR_COM - ª®¬ ¤ ç⥨¥/§ ¯¨áì º\
|
||||||
CP 20
|
; º 0 - ç⥨¥, 255 - § ¯¨áì º\
|
||||||
RET C
|
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
|
||||||
; JR C,RAMD_TEST
|
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
|
||||||
NO_DISK2:
|
INC B
|
||||||
JP AUTO_3EE7 ; NO_DISK
|
DEC B
|
||||||
|
RET Z
|
||||||
X_AUTO_3DCE:
|
;
|
||||||
CALL RES_1440
|
PUSH BC
|
||||||
LD A,(OPER_DISK)
|
PUSH HL
|
||||||
JP AUTO_3DCE
|
; á®åà 塞 ª®«-¢® ᥪâ®à®¢ ¤«ï ç⥨ï
|
||||||
|
LD C,B
|
||||||
;*************************************
|
; ªàã稢 ¥¬ áçñâ稪 r/w ᥪâ®à®¢
|
||||||
RAMD_X14: ; FORMATING
|
LD HL,(ZX_VARS.CONT_SEC)
|
||||||
CALL get_disk_type
|
LD D,H
|
||||||
PUSH AF
|
LD E,L
|
||||||
PUSH BC
|
;!TODO ¯¥à¥¤¥« âì íâã â㯮áâì ¬ ⥬ ⨪ã
|
||||||
PUSH HL
|
LD A,16
|
||||||
CALL DISK_REDIR
|
.loop: INC L
|
||||||
CP 4
|
CP L
|
||||||
JR C,DISK_FORM
|
JR NZ,.skip
|
||||||
CP 20
|
INC H
|
||||||
JR C,RAMD_FORMAT
|
LD L,0
|
||||||
JP READ_ONLY
|
.skip: DJNZ .loop
|
||||||
|
;
|
||||||
DISK_FORM:
|
; á®åà 塞 ªàãç¥ë© áçñâ稪
|
||||||
LD A,(MED_START+1)
|
LD (ZX_VARS.CONT_SEC),HL
|
||||||
CP 14H
|
; ”ˆ‡ˆ—…‘Šˆ‰ ‘…Š’Ž<E28099> -> ‹Žƒˆ—…‘Šˆ‰
|
||||||
JR Z,QVICK_FORMAT
|
LD A,D
|
||||||
POP HL
|
RRCA
|
||||||
POP BC
|
RRCA
|
||||||
POP AF
|
RRCA
|
||||||
JP AUTO_1EE0
|
RRCA
|
||||||
|
LD D,A
|
||||||
QVICK_FORMAT:
|
AND #F0
|
||||||
POP HL
|
OR E
|
||||||
POP BC
|
LD E,A
|
||||||
POP AF
|
LD A,D
|
||||||
JR Q_FORM_1
|
AND #0F
|
||||||
|
LD D,A
|
||||||
RAMD_FORMAT:
|
; ¢®ááâ ¢«¨¢ ¥¬ ª®«-¢® ᥪâ®à®¢ ¤«ï ç⥨ï
|
||||||
SUB 4
|
LD B,C
|
||||||
|
;Get RAM Block ID
|
||||||
CALL TEST_RAMD
|
LD A,(ZX_VARS.OPER_DISK)
|
||||||
JP C,READ_ONLY
|
AND 3
|
||||||
CALL NZ,CLEAR_RAMD
|
LD C,BIOS.GET_DRV_ST ; ¥ 㡨¢ ¥â DE ¨ B
|
||||||
|
CALL EXP_FNS
|
||||||
POP HL
|
JP C,.ERROR
|
||||||
POP BC
|
SUB 4
|
||||||
POP AF
|
LD C,BIOS.GET_RAMD_ST ; ¥ 㡨¢ ¥â DE ¨ B
|
||||||
LD B,28H ; à §¬¥à 640K
|
CALL EXP_FNS
|
||||||
CALL DISK_REDIR
|
JP C,.ERROR
|
||||||
SUB 4
|
; A = RAM Block ID
|
||||||
|
EX AF,AF'
|
||||||
CALL GET_RAM_BLK ; ‚›„…‹…<E280B9>ˆ… <20>€ŒŸ’ˆ
|
;
|
||||||
; LD C,A ; Š‹ž— RAM-Disk
|
POP HL
|
||||||
Q_FORM_1:
|
; Get command r/w
|
||||||
LD HL,BUFER ; CLEAR DISK BUFER
|
LD A,(ZX_VARS.RD_WR_COM)
|
||||||
LD DE,BUFER+1
|
EX AF,AF'
|
||||||
LD BC,0FFh
|
LD C,BIOS.BLK_RD_WR
|
||||||
LD (HL),0
|
CALL EXP_FNS
|
||||||
LDIR
|
; HL = ¤à¥á ¡ãä¥à ¤«ï á«¥¤ãî饣® ᥪâ®à
|
||||||
|
POP BC
|
||||||
LD DE,0
|
JP C,AUTO_3EE7
|
||||||
RAMD_F_LOOP:
|
LD B,0
|
||||||
LD HL,BUFER
|
|
||||||
LD B,1
|
|
||||||
PUSH DE
|
|
||||||
CALL WRITE_DISK
|
|
||||||
POP DE
|
|
||||||
INC E
|
|
||||||
LD A,E
|
|
||||||
CP 8
|
|
||||||
JR NZ,RAMD_F_LOOP
|
|
||||||
LD HL,2544
|
|
||||||
LD A,22
|
|
||||||
JP AUTO_1F55
|
|
||||||
|
|
||||||
;*************************************
|
|
||||||
CLEAR_RAMD_X:
|
|
||||||
CALL RAMD_SYM
|
|
||||||
JR NC,CLEAR_RMD_A
|
|
||||||
DEC DE
|
|
||||||
LD A,(DE)
|
|
||||||
CP 13
|
|
||||||
SCF
|
|
||||||
RET NZ
|
|
||||||
CLEAR_RAMD:
|
|
||||||
CALL DISK_REDIR
|
|
||||||
CLEAR_NEXT:
|
|
||||||
SUB 4
|
|
||||||
RET C
|
|
||||||
CP RAMD_KEY_NUM
|
|
||||||
CCF
|
|
||||||
RET C
|
|
||||||
|
|
||||||
CLEAR_RMD_A:
|
|
||||||
PUSH HL
|
|
||||||
PUSH DE
|
|
||||||
PUSH BC
|
|
||||||
LD C,93h ; ®ç¨á⪠RAM-Disk
|
|
||||||
CALL EXP_FNS ; ¢ë§¢ âì äãªæ¨î
|
|
||||||
EI
|
|
||||||
POP BC
|
|
||||||
POP DE
|
|
||||||
POP HL
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;*********************************************************
|
.ERROR: POP HL
|
||||||
GET_RMD_A:
|
POP BC
|
||||||
GET_RAM_BLK: ; B - —ˆ‘‹Ž ’<>…<EFBFBD>“…Œ›• <20>‹ŽŠŽ‚, A - Š‹ž— RAM-Disk
|
JP AUTO_3EE7 ;Disk error
|
||||||
LD C,92h
|
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||||
CALL EXP_FNS ; A,L - Š‹ž— RAM-Disk - ®¬¥à ¯¥à¢®£® ¡«®ª
|
; º RD/WR SECTOR º\
|
||||||
EI
|
; º HL - BUFER º\
|
||||||
RET NC
|
; º DE - ABS sector ¢ 256b ¡«®ª å º\
|
||||||
NO_MEM:
|
; º B - ç¨á«® ¤ ëå ¢ 256b ¡«®ª å º\
|
||||||
LD HL,NO_MEMORY
|
; º A - block RAM º\
|
||||||
JP ERR_EXIT
|
; º A' - ª®¬ ¤ ç⥨¥/§ ¯¨áì/ç⥨¥ ROM Disk º\
|
||||||
|
; º 0 - read, 255 - write, 70 - read ROM DISK º\
|
||||||
;*********************************************************
|
; º ** NOT USED TR-DOS VARS ** º\
|
||||||
READ_ONLY:
|
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
|
||||||
LD HL,READ_ONLY_MSG ; Read only !!
|
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
|
||||||
JP ERR_EXIT
|
|
||||||
|
|
||||||
FDD_SET:
|
|
||||||
LD A,(OPER_DISK)
|
|
||||||
LD B,A
|
|
||||||
LD C,0CCH
|
|
||||||
CALL EXP_FNS
|
|
||||||
EI
|
|
||||||
RET
|
|
||||||
|
|
||||||
HDD_SET:
|
|
||||||
LD C,0
|
|
||||||
CALL HD_CMD
|
|
||||||
JP C,HDD_PROG_E
|
|
||||||
|
|
||||||
LD A,(OPER_DISK)
|
|
||||||
LD B,A
|
|
||||||
LD A,0
|
|
||||||
LD C,0CDH
|
|
||||||
CALL EXP_FNS
|
|
||||||
EI
|
|
||||||
RET
|
|
||||||
|
|
||||||
RAMD_SET:
|
|
||||||
CALL RAMD_SYM
|
|
||||||
RET C
|
|
||||||
RAMD_SET1:
|
|
||||||
PUSH AF
|
|
||||||
LD A,(OPER_DISK)
|
|
||||||
LD B,A
|
|
||||||
POP AF
|
|
||||||
LD C,0CBH
|
|
||||||
CALL EXP_FNS
|
|
||||||
EI
|
|
||||||
RET
|
|
||||||
|
|
||||||
RAMD_SYM:
|
|
||||||
LD A,(DE)
|
|
||||||
INC DE
|
|
||||||
CP 20H
|
|
||||||
JR Z,RAMD_SYM
|
|
||||||
AND 223
|
|
||||||
CP 'E'
|
|
||||||
RET C
|
|
||||||
SUB 'E'
|
|
||||||
CP 16
|
|
||||||
CCF
|
|
||||||
RET C
|
|
||||||
PUSH AF
|
|
||||||
LD A,(DE)
|
|
||||||
CP ':'
|
|
||||||
INC DE
|
|
||||||
JR Z,RAMD_SYM_OK
|
|
||||||
DEC DE
|
|
||||||
CP 21H
|
|
||||||
JR C,RAMD_SYM_OK
|
|
||||||
POP AF
|
|
||||||
SCF
|
|
||||||
RET
|
|
||||||
RAMD_SYM_OK:
|
|
||||||
POP AF
|
|
||||||
RET
|
|
||||||
|
|
||||||
|
; RAMD_NEXT_SEC:
|
||||||
|
; PUSH HL
|
||||||
|
; LD HL,ZX_VARS.CONT_SEC
|
||||||
|
; LD A,16
|
||||||
|
; INC (HL)
|
||||||
|
; CP (HL)
|
||||||
|
; JR NZ,.RAMD_NEXT_1
|
||||||
|
; LD (HL),0
|
||||||
|
; INC HL
|
||||||
|
; INC (HL)
|
||||||
|
; .RAMD_NEXT_1:
|
||||||
|
; POP HL
|
||||||
|
; LD BC,#100
|
||||||
|
; ADD HL,BC
|
||||||
|
; RET
|
||||||
|
|
||||||
|
ENDIF
|
||||||
|
;***********************************************************************
|
||||||
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
|
DISPLAY "TR_RMD_S.ASZ size: ",/A,$-File_Start
|
||||||
|
DISPLAY "===================================================="
|
||||||
601
TRDOS/boot/boot.asm
Executable file
601
TRDOS/boot/boot.asm
Executable file
@ -0,0 +1,601 @@
|
|||||||
|
IF DEFtrd_boot_small
|
||||||
|
|
||||||
|
;======================================================================;
|
||||||
|
INCLUDE 'inc/rom_routines.inc'
|
||||||
|
INCLUDE 'Shared_Includes/constants/ZX_VARS.inc'
|
||||||
|
INCLUDE 'Shared_Includes/constants/zx_char_codes.inc'
|
||||||
|
INCLUDE 'Shared_Includes/constants/standart_colors.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
|
||||||
|
;======================================================================;
|
||||||
|
|
||||||
|
|
||||||
|
; Variables
|
||||||
|
;======================================================================;
|
||||||
|
ColumnNumber EQU #70E0
|
||||||
|
Columns EQU 3
|
||||||
|
;======================================================================;
|
||||||
|
|
||||||
|
|
||||||
|
;======================================================================;
|
||||||
|
ORG org_addr
|
||||||
|
bstart: DW #100 ; line number = 1
|
||||||
|
DW l1end - l1begin ; line length
|
||||||
|
l1begin: DB ZX_Token.border, ZX_Token.not, ZX_Token.pi, ":"
|
||||||
|
DB ZX_Token.randomize, ZX_Token.usr, ZX_Token.val, '"',"23907",'"'
|
||||||
|
DB ":", ZX_Token.rem, ":", ZX_Token.run
|
||||||
|
DB '"'
|
||||||
|
BootName: DB ZX_Char.tab, 10, 32
|
||||||
|
DB "MAXBOOT v9.1"
|
||||||
|
.size EQU $-BootName
|
||||||
|
DB '"', ZX_Char.carriage_return
|
||||||
|
;======================================================================;
|
||||||
|
|
||||||
|
;#70F6 - disk name
|
||||||
|
|
||||||
|
;======================================================================;
|
||||||
|
START_BOOT: ;Permanent current colours, etc, as set up by colour statements.
|
||||||
|
LD (iy+#53),COLORS.ZX.CYAN ;5d63 fd 36 53 05 . 6 S .
|
||||||
|
l5d67h: CALL BASIC_FN.x48.cls ;5d67 cd 6b 0d . k .
|
||||||
|
ADD HL,BC ;5d6a 09 .
|
||||||
|
; HL = 6801
|
||||||
|
; read 9 sectors
|
||||||
|
LD BC,#0905 ;5d6b 01 05 09 . . .
|
||||||
|
PUSH HL ;5d6e e5 .
|
||||||
|
CALL #3D13 ;5d6f cd 13 3d . . =
|
||||||
|
;PR-STRING
|
||||||
|
LD DE,BootName ;5d72 11 52 5d . R ]
|
||||||
|
LD C,BootName.size ;5d75 0e 0f . .
|
||||||
|
CALL #203C ;5d77 cd 3c 20 . <
|
||||||
|
;CHAN_OPEN
|
||||||
|
; Open channel 2 (main screen)
|
||||||
|
LD A,#02 ;5d7a 3e 02 > .
|
||||||
|
CALL #1601 ;5d7c cd 01 16 . . .
|
||||||
|
;
|
||||||
|
POP HL ;5d7f e1 .
|
||||||
|
LD D,H ;5d80 54 T
|
||||||
|
LD E,L ;5d81 5d ]
|
||||||
|
loopDir: LD BC,8 ; ᬥ饨¥ ⨯ ä ©« ;5d82 01 08 00 . . .
|
||||||
|
DEC (HL) ;5d85 35 5
|
||||||
|
JR Z,.nextFile ;5d86 28 28 ( (
|
||||||
|
INC (HL) ;5d88 34 4
|
||||||
|
JR Z,.EXIT ;5d89 28 2a ( *
|
||||||
|
;
|
||||||
|
PUSH HL ;5d8b e5 .
|
||||||
|
ADD HL,BC ;5d8c 09 .
|
||||||
|
LD A,(HL) ;5d8d 7e ~
|
||||||
|
POP HL ;5d8e e1 .
|
||||||
|
CP "B" ;5d8f fe 42 . B
|
||||||
|
JR NZ,.nextFile ;5d91 20 1d .
|
||||||
|
PUSH HL ;5d93 e5 .
|
||||||
|
;PRINT-A
|
||||||
|
LD A," " ;5d94 3e 20 >
|
||||||
|
RST #10 ;5d96 d7 .
|
||||||
|
; (#5C51) == #5D2B
|
||||||
|
; (#5D2B) == #09F4
|
||||||
|
; ¢ë¢®¤ ¨¬¥¨ ä ©«
|
||||||
|
.loopPrint: LD A,(HL) ;5d97 7e ~
|
||||||
|
RST #10 ;5d98 d7 .
|
||||||
|
LDI ;5d99 ed a0 . .
|
||||||
|
JP PE,.loopPrint ;5d9b ea 97 5d . . ]
|
||||||
|
; ¯®¤áçñâ ª®«®®ª ¤«ï ¯à ¢¨«ì®£® ¢ë¢®¤ ¨¬ñ ä ©«®¢
|
||||||
|
LD HL,ColumnNumber ;5d9e 21 e0 70 ! . p
|
||||||
|
INC (HL) ;5da1 34 4
|
||||||
|
LD A,(HL) ;5da2 7e ~
|
||||||
|
.loopColumn: SUB Columns ;5da3 d6 03 . .
|
||||||
|
JR Z,.ColumnThree ;5da5 28 05 ( .
|
||||||
|
JR NC,.loopColumn ;5da7 30 fa 0 .
|
||||||
|
LD A," " ;5da9 3e 20 >
|
||||||
|
RST #10 ;5dab d7 .
|
||||||
|
.ColumnThree: LD A," " ;5dac 3e 20 >
|
||||||
|
RST #10 ;5dae d7 .
|
||||||
|
;
|
||||||
|
POP HL ;5daf e1 .
|
||||||
|
.nextFile: LD C,#10 ;5db0 0e 10 . .
|
||||||
|
ADD HL,BC ;5db2 09 .
|
||||||
|
JR loopDir ;5db3 18 cd . .
|
||||||
|
.EXIT: ;
|
||||||
|
;;;;;;;;;;;;;;;;;
|
||||||
|
; B = 0
|
||||||
|
; <20>¨á®¢ «ª ªãàá®à âਡãâ ¬¨. <20>¥à¥¬¥é¥¨¥ ªãàá®à
|
||||||
|
MAIN_LOOP: LD C,B ;5db5 48 H
|
||||||
|
l5db6h: LD HL,#57F5 ;5db6 21 f5 57 ! . W
|
||||||
|
LD DE,#000B ;5db9 11 0b 00 . . .
|
||||||
|
LD A,D ;5dbc 7a z
|
||||||
|
l5dbdh: LD B,#03 ;5dbd 06 03 . .
|
||||||
|
l5dbfh: ADD HL,DE ;5dbf 19 .
|
||||||
|
CP C ;5dc0 b9 .
|
||||||
|
JR Z,l5dc9h ;5dc1 28 06 ( .
|
||||||
|
INC A ;5dc3 3c <
|
||||||
|
DJNZ l5dbfh ;5dc4 10 f9 . .
|
||||||
|
DEC HL ;5dc6 2b +
|
||||||
|
JR l5dbdh ;5dc7 18 f4 . .
|
||||||
|
;
|
||||||
|
l5dc9h: LD B,#0A ;5dc9 06 0a . .
|
||||||
|
LD DE,(#70DE) ;5dcb ed 5b de 70 . [ . p
|
||||||
|
LD (#70DE),HL ;5dcf 22 de 70 " . p
|
||||||
|
LD A,#05 ;5dd2 3e 05 > .
|
||||||
|
l5dd4h: LD (DE),A ;5dd4 12 .
|
||||||
|
INC DE ;5dd5 13 .
|
||||||
|
LD (HL),#1E ;5dd6 36 1e 6 .
|
||||||
|
INC HL ;5dd8 23 #
|
||||||
|
DJNZ l5dd4h ;5dd9 10 f9 . .
|
||||||
|
LD HL,#5C08 ;5ddb 21 08 5c ! . \
|
||||||
|
LD (HL),H ;5dde 74 t
|
||||||
|
l5ddfh: LD A,(HL) ;5ddf 7e ~
|
||||||
|
OR #20 ;5de0 f6 20 .
|
||||||
|
SUB #20 ;5de2 d6 20 .
|
||||||
|
JR Z,l5d67h ;5de4 28 81 ( .
|
||||||
|
SUB L ;5de6 95 .
|
||||||
|
LD B,#02 ;5de7 06 02 . .
|
||||||
|
l5de9h: JR Z,l5e0fh ;5de9 28 24 ( $
|
||||||
|
DEC A ;5deb 3d =
|
||||||
|
JR Z,l5e13h ;5dec 28 25 ( %
|
||||||
|
DEC A ;5dee 3d =
|
||||||
|
JR Z,l5e11h ;5def 28 20 (
|
||||||
|
DEC A ;5df1 3d =
|
||||||
|
JR Z,l5e0dh ;5df2 28 19 ( .
|
||||||
|
SUB B ;5df4 90 .
|
||||||
|
JR Z,RUN_BASIC ;5df5 28 2d ( -
|
||||||
|
SUB #03 ;5df7 d6 03 . .
|
||||||
|
JR Z,RUN_BASIC ;5df9 28 29 ( )
|
||||||
|
SUB #06 ;5dfb d6 06 . .
|
||||||
|
DJNZ l5de9h ;5dfd 10 ea . .
|
||||||
|
SUB #1E ;5dff d6 1e . .
|
||||||
|
JR Z,l5e11h ;5e01 28 0e ( .
|
||||||
|
SUB #0E ;5e03 d6 0e . .
|
||||||
|
JR Z,l5e0fh ;5e05 28 08 ( .
|
||||||
|
DEC A ;5e07 3d =
|
||||||
|
JR Z,l5e13h ;5e08 28 09 ( .
|
||||||
|
DEC A ;5e0a 3d =
|
||||||
|
JR NZ,l5ddfh ;5e0b 20 d2 .
|
||||||
|
l5e0dh: SUB #02 ;5e0d d6 02 . .
|
||||||
|
l5e0fh: SUB #04 ;5e0f d6 04 . .
|
||||||
|
l5e11h: ADD A,#02 ;5e11 c6 02 . .
|
||||||
|
l5e13h: ADD A,C ;5e13 81 .
|
||||||
|
LD BC,(ColumnNumber) ;5e14 ed 4b e0 70 . K . p
|
||||||
|
DEC C ;5e18 0d .
|
||||||
|
INC A ;5e19 3c <
|
||||||
|
JP M,l5db6h ;5e1a fa b6 5d . . ]
|
||||||
|
INC C ;5e1d 0c .
|
||||||
|
CP C ;5e1e b9 .
|
||||||
|
LD C,A ;5e1f 4f O
|
||||||
|
JR C,l5db6h ;5e20 38 94 8 .
|
||||||
|
JR MAIN_LOOP ;5e22 18 91 . .
|
||||||
|
;
|
||||||
|
; § ¯ã᪠¢ ᨪ
|
||||||
|
; A = 0
|
||||||
|
RUN_BASIC: LD B,A ;5e24 47 G
|
||||||
|
LD A,C ;5e25 79 y
|
||||||
|
INC A ;5e26 3c <
|
||||||
|
LD C,L ;5e27 4d M
|
||||||
|
LD HL,#67F9 ;5e28 21 f9 67 ! . g
|
||||||
|
.loop: ADD HL,BC ;5e2b 09 .
|
||||||
|
DEC A ;5e2c 3d =
|
||||||
|
JR NZ,.loop ;5e2d 20 fc .
|
||||||
|
;
|
||||||
|
LD DE,BootName ;5e2f 11 52 5d . R ]
|
||||||
|
LDIR ;5e32 ed b0 . .
|
||||||
|
JP #3D03 ;5e34 c3 03 3d . . =
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;ADD A,B ;5e37 80 .
|
||||||
|
;XOR D ;5e38 aa .
|
||||||
|
;DEFB 001h,000h ;5e39 01 00 . .
|
||||||
|
|
||||||
|
StartLineNum: DB 0
|
||||||
|
DW 0
|
||||||
|
;DB #80
|
||||||
|
l1end:
|
||||||
|
|
||||||
|
EXPORT StartLineNum
|
||||||
|
EXPORT org_addr
|
||||||
|
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
|
||||||
|
;======================================================================;
|
||||||
|
INCLUDE 'inc/rom_routines.inc'
|
||||||
|
INCLUDE 'Shared_Includes/constants/ZX_VARS.inc'
|
||||||
|
INCLUDE 'Shared_Includes/constants/zx_char_codes.inc'
|
||||||
|
INCLUDE 'Shared_Includes/constants/standart_colors.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
|
||||||
|
|
||||||
|
;=======================================================================
|
||||||
|
DiskName EQU catBuff + #08F5
|
||||||
|
.size EQU 8
|
||||||
|
|
||||||
|
Columns EQU 3
|
||||||
|
|
||||||
|
vROMbootSize EQU bstart
|
||||||
|
;=======================================================================
|
||||||
|
|
||||||
|
|
||||||
|
ORG org_addr
|
||||||
|
|
||||||
|
bstart: DW #100 ; line number = 1
|
||||||
|
DW l1end-l1begin ; line length
|
||||||
|
l1begin: DB ZX_Token.randomize,ZX_Token.usr,"0" ; 'rand' 'usr' 0
|
||||||
|
DB ZX_Char.number
|
||||||
|
DB #00,#00 : DW start : DB #00 ; start address
|
||||||
|
DB ZX_Char.carriage_return
|
||||||
|
l1end: DW #200 ; line number = 2
|
||||||
|
DW l2end-l2begin ; line length
|
||||||
|
l2begin: DB ZX_Token.randomize,ZX_Token.usr,"0" ; ':' 'rand' 'usr' 0
|
||||||
|
DB ZX_Char.number
|
||||||
|
DB #00,#00 : DW 15619 : DB #00 ; start address
|
||||||
|
DB ":",ZX_Token.rem,":",ZX_Token.run,'"'
|
||||||
|
filename: DB "boot ",'"',":" ; ':' 'rem' run
|
||||||
|
;=======================================================================
|
||||||
|
|
||||||
|
;org #5d65
|
||||||
|
start: LD (memSP),SP
|
||||||
|
NewDisk: ;CALL clear_screen
|
||||||
|
LD BC,#0905
|
||||||
|
LD DE,0
|
||||||
|
LD HL,catBuff
|
||||||
|
CALL #3D13
|
||||||
|
LD A,"a"
|
||||||
|
LD (main.markPos),A
|
||||||
|
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: CALL PRINT_HELP
|
||||||
|
LD A,collor_T
|
||||||
|
LD (var_collor),A
|
||||||
|
LD HL,#50CC
|
||||||
|
LD (var_printPos),HL
|
||||||
|
LD HL,DiskName
|
||||||
|
|
||||||
|
|
||||||
|
LD B,8
|
||||||
|
.p1: LD A,(HL)
|
||||||
|
PUSH HL
|
||||||
|
CALL printChar
|
||||||
|
POP HL
|
||||||
|
INC L
|
||||||
|
DJNZ .p1
|
||||||
|
; LD A,L
|
||||||
|
; CP low (catBuff + #08FD)
|
||||||
|
; JR NZ,.p1
|
||||||
|
|
||||||
|
LD HL,#4000
|
||||||
|
LD (var_printPos),HL
|
||||||
|
; ¢ëç¨âë¢ ¨¥ ª â «®£
|
||||||
|
.buffPointer+1: LD HL,catBuff
|
||||||
|
.markPos+2: LD BC,"aa"
|
||||||
|
.l1: LD A,(HL)
|
||||||
|
DEC A
|
||||||
|
JR Z,.nextRec
|
||||||
|
;
|
||||||
|
JP M,DirShowDone
|
||||||
|
;
|
||||||
|
SET 3,L
|
||||||
|
LD A,(HL)
|
||||||
|
CP "B"
|
||||||
|
RES 3,L
|
||||||
|
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
|
||||||
|
CP B ; ¢ë¡à ë© ä ©«
|
||||||
|
LD A,collor_A
|
||||||
|
JR NZ,.notMarked
|
||||||
|
; ¢ë¤¥«¥¨¥ ä ©« ¨ ª®¯¨à®¢ ¨¥ ¥£® ¢ áâப㠧 ¯ãáª
|
||||||
|
XOR collor_M
|
||||||
|
;
|
||||||
|
LD DE,filename
|
||||||
|
PUSH BC
|
||||||
|
LD BC,8
|
||||||
|
LDIR
|
||||||
|
POP BC
|
||||||
|
RES 3,L
|
||||||
|
;
|
||||||
|
.notMarked: CALL prn_txt
|
||||||
|
.nextHiddenRec: INC C
|
||||||
|
.nextRec: LD DE,#10
|
||||||
|
ADD HL,DE
|
||||||
|
JR .l1
|
||||||
|
;
|
||||||
|
|
||||||
|
PRINT_NEXT_BUTTONS:
|
||||||
|
LD A,(main.PagesCounter)
|
||||||
|
LD (keys.nxtPage),A
|
||||||
|
DEC A
|
||||||
|
;JR Z,.noChange
|
||||||
|
JR Z,keys
|
||||||
|
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)
|
||||||
|
.w1: BIT 5,(iy+1)
|
||||||
|
JR Z,.w1
|
||||||
|
LD A,(iy-#32)
|
||||||
|
;
|
||||||
|
CP B
|
||||||
|
JR Z,exit
|
||||||
|
CP #0D ; enter
|
||||||
|
JR Z,exit
|
||||||
|
CP " " ; space
|
||||||
|
JP Z,NewDisk
|
||||||
|
;
|
||||||
|
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
|
||||||
|
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.nextLoop
|
||||||
|
|
||||||
|
; 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: LD A,C
|
||||||
|
CP "a"
|
||||||
|
JP Z,NewDisk
|
||||||
|
memSP+1: LD SP,0
|
||||||
|
RET
|
||||||
|
|
||||||
|
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
|
||||||
|
;
|
||||||
|
;
|
||||||
|
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; ALIGN #10
|
||||||
|
; TXT_BUTTONS:
|
||||||
|
; .prev: DB '<< PgDn '
|
||||||
|
; .next: DB '>> PgUp '
|
||||||
|
; ;
|
||||||
|
; main.CurrentPage:
|
||||||
|
; DB 1
|
||||||
|
; main.PagesCounter:
|
||||||
|
; DB 1
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
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
|
||||||
|
;
|
||||||
|
|
||||||
|
ENDIF
|
||||||
2
TRDOS/boot/boot.inc
Normal file
2
TRDOS/boot/boot.inc
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
StartLineNum: EQU 0x00005F2E
|
||||||
|
org_addr: EQU 0x00005D3B
|
||||||
120
ZX_EXP.ASM
120
ZX_EXP.ASM
@ -11,10 +11,10 @@
|
|||||||
ORG 0
|
ORG 0
|
||||||
|
|
||||||
SPRIN2 EQU 2 ; 1 - ¢ª«î票¥ Sprinter-1 ¯¥à¢®© ¯à®è¨¢ª®©
|
SPRIN2 EQU 2 ; 1 - ¢ª«î票¥ Sprinter-1 ¯¥à¢®© ¯à®è¨¢ª®©
|
||||||
; 2 - ¢ª«î票¥ Sprinter-2 ¯¥à¢®© ¯à®è¨¢ª®©
|
; 2 - ¢ª«î票¥ Sprinter-2 ¯¥à¢®© ¯à®è¨¢ª®©
|
||||||
|
|
||||||
INCLUDE 'INC/SPRINT00.INC' ; ª®áâ âë, ¬ ªà®áë..
|
INCLUDE 'INC/SPRINT00.INC' ; ª®áâ âë, ¬ ªà®áë..
|
||||||
INCLUDE 'INC/CHAR_CODES.INC'
|
INCLUDE 'shared_includes/constants/zx_char_codes.inc'
|
||||||
PORT_JOI EQU 0FFh
|
PORT_JOI EQU 0FFh
|
||||||
|
|
||||||
;******************************
|
;******************************
|
||||||
@ -204,39 +204,41 @@ REST_LOOP:
|
|||||||
RESTART_TXT_L EQU $-RESTART_TXT
|
RESTART_TXT_L EQU $-RESTART_TXT
|
||||||
|
|
||||||
;**********************************
|
;**********************************
|
||||||
|
BLOCK #100 - $,255
|
||||||
|
; ‚믮«ï¥âáï á ¤à¥á #C000
|
||||||
SETUP_TXT:
|
SETUP_TXT:
|
||||||
|
|
||||||
LD A,CNF_0+D_ROM16ON
|
LD A,CNF_0+D_ROM16ON
|
||||||
OUT (CNF_PORT),A
|
OUT (CNF_PORT),A
|
||||||
|
|
||||||
LD HL,1000H
|
LD HL,#1000
|
||||||
LD DE,8000H
|
LD DE,#8000
|
||||||
LD BC,3000H
|
LD BC,#3000
|
||||||
LDIR
|
LDIR
|
||||||
|
|
||||||
LD A,CNF_0+D_ROM16OFF
|
LD A,CNF_0+D_ROM16OFF
|
||||||
OUT (CNF_PORT),A
|
OUT (CNF_PORT),A
|
||||||
|
|
||||||
LD HL,08005H
|
LD HL,#8005
|
||||||
|
|
||||||
LD A,0FEh
|
LD A,#FE
|
||||||
LD BC,204Eh
|
LD BC,#204E ;ALL_MODE
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
LD A,7FH
|
LD A,#7F
|
||||||
IN A,(0FEH)
|
IN A,(#FE)
|
||||||
CPL
|
CPL
|
||||||
AND 1
|
AND 1
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
|
||||||
LD A,0FFh
|
LD A,#FF
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
|
||||||
JP (HL)
|
JP (HL)
|
||||||
|
|
||||||
SETUP_TXT_LEN EQU $-SETUP_TXT
|
SETUP_TXT_LEN EQU $-SETUP_TXT
|
||||||
|
;**********************************
|
||||||
|
|
||||||
|
|
||||||
SYSTEM_ID_TXT:
|
SYSTEM_ID_TXT:
|
||||||
DB "NEW_BIOS"
|
DB "NEW_BIOS"
|
||||||
@ -659,20 +661,21 @@ NO_CONFIG_:
|
|||||||
|
|
||||||
POP HL ; ª®ä¨£ãà æ¨ï
|
POP HL ; ª®ä¨£ãà æ¨ï
|
||||||
LD A,H
|
LD A,H
|
||||||
CP 0FFH
|
CP #FF
|
||||||
JR NZ,NO_SETUP_1
|
JR NZ,NO_SETUP_1
|
||||||
LD A,L
|
LD A,L
|
||||||
|
|
||||||
IF SPRIN2 EQ 2
|
IF SPRIN2 = 2
|
||||||
CP 0FDH
|
CP #FD
|
||||||
; LD BC,0FFFDH ; Ю䍣ãà æ¨ï Sprinter-2
|
; LD BC,0FFFDH ; Ю䍣ãà æ¨ï Sprinter-2
|
||||||
PG_SP1 equ 0ECH
|
PG_SP1 EQU #EC
|
||||||
PG_SP2 equ 0EEH
|
PG_SP2 EQU #EE
|
||||||
PG_AY equ 0EAH
|
PG_AY EQU #EA
|
||||||
ELSE
|
|
||||||
|
ELSE
|
||||||
; LD BC,0FFFEH ; Ю䍣ãà æ¨ï Sprinter-1
|
; LD BC,0FFFEH ; Ю䍣ãà æ¨ï Sprinter-1
|
||||||
CP 0FEH
|
CP #FE
|
||||||
PG_AY equ 0EAH
|
PG_AY EQU #EA
|
||||||
ENDIF
|
ENDIF
|
||||||
JR NZ,NO_SETUP_2
|
JR NZ,NO_SETUP_2
|
||||||
; AND A
|
; AND A
|
||||||
@ -704,19 +707,19 @@ ELSE
|
|||||||
LD BC,204Eh ; system_port
|
LD BC,204Eh ; system_port
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
LD SP,0BFFFH
|
LD SP,#BFFF
|
||||||
LD HL,L_PENTAGON
|
LD HL,L_PENTAGON
|
||||||
CALL SINC_DEF
|
CALL SINC_DEF
|
||||||
|
|
||||||
LD SP,0BFFFH
|
LD SP,#BFFF
|
||||||
LD HL,L_PENTAGON
|
LD HL,L_PENTAGON
|
||||||
CALL SINC_DEF
|
CALL SINC_DEF
|
||||||
|
|
||||||
LD HL,SETUP_TXT
|
LD HL,SETUP_TXT
|
||||||
LD DE,0C000H
|
LD DE,#C000
|
||||||
LD BC,SETUP_TXT_LEN
|
LD BC,SETUP_TXT_LEN
|
||||||
LDIR
|
LDIR
|
||||||
CALL 0C000H
|
CALL #C000
|
||||||
JP NO_SETUP_1
|
JP NO_SETUP_1
|
||||||
|
|
||||||
GOTO_SPEC:
|
GOTO_SPEC:
|
||||||
@ -735,7 +738,7 @@ NO_SETUP_2:
|
|||||||
|
|
||||||
NO_SETUP_1:
|
NO_SETUP_1:
|
||||||
|
|
||||||
LD A,(0A8h)
|
LD A,(TABLE_X + 8)
|
||||||
OUT (LPT1_D),A
|
OUT (LPT1_D),A
|
||||||
|
|
||||||
LD A,0FEh ; ACC-off
|
LD A,0FEh ; ACC-off
|
||||||
@ -743,7 +746,7 @@ NO_SETUP_1:
|
|||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
SND_TEST_RET:
|
SND_TEST_RET:
|
||||||
LD SP,0BFFFH
|
LD SP,#BFFF
|
||||||
|
|
||||||
LD HL,L_PENTAGON
|
LD HL,L_PENTAGON
|
||||||
CALL SINC_DEF
|
CALL SINC_DEF
|
||||||
@ -1396,8 +1399,9 @@ LOOP_EQ: ;
|
|||||||
OUT (LPT1_D),A
|
OUT (LPT1_D),A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
;
|
||||||
;**********************************************
|
;**********************************************
|
||||||
; DSS 3C10h,255
|
; BLOCK #3C10 - $,255
|
||||||
;KBD_RET:
|
;KBD_RET:
|
||||||
; LD A,D_ROM16OFF
|
; LD A,D_ROM16OFF
|
||||||
; OUT (SYS_PORT_OFF),A
|
; OUT (SYS_PORT_OFF),A
|
||||||
@ -1422,10 +1426,10 @@ LOOP_EQ: ;
|
|||||||
; CALL KBD_OFF
|
; CALL KBD_OFF
|
||||||
; CALL DOS_ON
|
; CALL DOS_ON
|
||||||
; JR KBD_RET2
|
; JR KBD_RET2
|
||||||
|
|
||||||
;******************************************************
|
;******************************************************
|
||||||
|
|
||||||
BLOCK 3CC0h - $,255
|
;******************************************************
|
||||||
|
BLOCK #3CC0 - $,255
|
||||||
MAGIC_1: ; ‡€ƒ‹“˜Š€ „‹Ÿ MAGIC
|
MAGIC_1: ; ‡€ƒ‹“˜Š€ „‹Ÿ MAGIC
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD A,D_ROM16OFF
|
LD A,D_ROM16OFF
|
||||||
@ -1579,9 +1583,8 @@ HDD_MSG_LEN EQU $-HDD_MSG
|
|||||||
|
|
||||||
;HDD_MSG_NO: DB "Boot record not found"
|
;HDD_MSG_NO: DB "Boot record not found"
|
||||||
;HDD_NO_LEN EQU $-HDD_MSG_NO
|
;HDD_NO_LEN EQU $-HDD_MSG_NO
|
||||||
|
|
||||||
SAVE_AUTOSTART:
|
SAVE_AUTOSTART:
|
||||||
LD HL,8000H
|
LD HL,#8000
|
||||||
LD DE,HDD_MSG
|
LD DE,HDD_MSG
|
||||||
LD B,HDD_MSG_LEN
|
LD B,HDD_MSG_LEN
|
||||||
SAVE_AUTO_L1:
|
SAVE_AUTO_L1:
|
||||||
@ -1596,7 +1599,7 @@ SAVE_AUTO_L1:
|
|||||||
CALL EXP_HDD
|
CALL EXP_HDD
|
||||||
RET C
|
RET C
|
||||||
|
|
||||||
LD HL,8000H
|
LD HL,#8000
|
||||||
LD A,0
|
LD A,0
|
||||||
LD DE,1
|
LD DE,1
|
||||||
LD IX,0
|
LD IX,0
|
||||||
@ -1701,43 +1704,44 @@ kbd_loop2:
|
|||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
;***********************************************************************;
|
||||||
|
;!FIXIT not used
|
||||||
|
BLOCK #3FD0 - $,0
|
||||||
|
; FN1_RET:
|
||||||
|
; PUSH AF
|
||||||
|
; LD A,D_ROM16ON
|
||||||
|
; OUT (CNF_PORT),A
|
||||||
|
; POP AF
|
||||||
|
; RST #18
|
||||||
|
; JR FN1_RET
|
||||||
|
|
||||||
BLOCK 3FD0H - $,0
|
;***********************************************************************;
|
||||||
FN1_RET:
|
;!FIXIT not used
|
||||||
PUSH AF
|
BLOCK #3FE0 - $,255
|
||||||
LD A,D_ROM16ON
|
; SOUND_TEST:
|
||||||
OUT (CNF_PORT),A
|
; LD A,D_ROM16ON ; AROM16 = 1
|
||||||
POP AF
|
; OUT (CNF_PORT),A
|
||||||
RST 18H
|
; JP SND_TEST_RET
|
||||||
JR FN1_RET
|
|
||||||
|
|
||||||
;******************************************
|
;***********************************************************************;
|
||||||
BLOCK 3FE0H - $,255
|
BLOCK #3FE8 - $,255
|
||||||
|
|
||||||
SOUND_TEST:
|
|
||||||
LD A,D_ROM16ON ; AROM16 = 1
|
|
||||||
OUT (CNF_PORT),A
|
|
||||||
JP SND_TEST_RET
|
|
||||||
|
|
||||||
BLOCK 3FE8H - $,255
|
|
||||||
HDD_EXE:
|
|
||||||
EXP_HDD:
|
EXP_HDD:
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD A,D_ROM16ON
|
LD A,D_ROM16ON
|
||||||
OUT (CNF_PORT),A
|
OUT (CNF_PORT),A
|
||||||
POP AF
|
POP AF
|
||||||
RET
|
RET
|
||||||
|
;***********************************************************************;
|
||||||
BLOCK 3FF0H-$,255
|
BLOCK #3FF0-$,255
|
||||||
|
;***********************************************************************;
|
||||||
BLOCK 3FF8H-$,255
|
BLOCK #3FF8-$,255
|
||||||
EXP_FNS_RET:
|
EXP_FNS_RET:
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD A,D_ROM16OFF
|
LD A,D_ROM16OFF
|
||||||
OUT (SYS_PORT_OFF),A
|
OUT (SYS_PORT_OFF),A
|
||||||
JP EXP_FNS
|
JP EXP_FNS
|
||||||
|
|
||||||
;******************************************
|
;***********************************************************************;
|
||||||
BLOCK 4000h-$,255
|
BLOCK #4000-$,255
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@ -708,14 +708,14 @@ INIT_SYS_ALL:
|
|||||||
LD (HL),0
|
LD (HL),0
|
||||||
LDIR
|
LDIR
|
||||||
|
|
||||||
LD DE,ZG_ADRESS
|
LD DE,ZG_ADDRESS
|
||||||
LD (WIN_ZG-4000h),DE
|
LD (WIN_ZG-4000h),DE
|
||||||
LD HL,L_SCORPION
|
LD HL,L_SCORPION
|
||||||
LD (CONFIG_ALL-4000h),HL
|
LD (CONFIG_ALL-4000h),HL
|
||||||
LD DE,CNF_0
|
LD DE,CNF_0
|
||||||
LD (CONFIG_DE-4000h),DE
|
LD (CONFIG_DE-4000h),DE
|
||||||
|
|
||||||
LD HL,TASK_DATA-4000h ; 㡨âì ¢á¥ § ¤ ç¨
|
LD HL,TASK_DATA-4000h ; 㡨âì ¢á¥ § ¤ ç¨ ;SYS_PAGE.CURRENT_TASK.ID
|
||||||
LD DE,TASK_DATA+1-4000h
|
LD DE,TASK_DATA+1-4000h
|
||||||
LD BC,0FFH
|
LD BC,0FFH
|
||||||
LD (HL),0
|
LD (HL),0
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
MACRO WAIT_HDD
|
MACRO WAIT_HDD
|
||||||
.LL1:
|
.LL1:
|
||||||
LD BC,P_HDST
|
LD BC,IDE.Read.Status
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
BIT 7,A
|
BIT 7,A
|
||||||
JR NZ,.LL1
|
JR NZ,.LL1
|
||||||
@ -17,29 +17,28 @@ HD_EXP_EXE:
|
|||||||
CALL HD_CMD_X
|
CALL HD_CMD_X
|
||||||
JP HD_EXP_RET
|
JP HD_EXP_RET
|
||||||
|
|
||||||
HD_CMD:
|
HD_CMD: POP AF
|
||||||
POP AF
|
|
||||||
CALL HD_CMD_X
|
CALL HD_CMD_X
|
||||||
JP HD_DOS_RET
|
JP HD_DOS_RET
|
||||||
|
|
||||||
|
|
||||||
HD_CMD_X: ; C - COMAND ( 5 - RD, 6 - WR )
|
HD_CMD_X: ; C - COMAND ( 5 - RD, 6 - WR )
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD A,C ; 0 - INIT, 1 - DIAG
|
LD A,C
|
||||||
AND A
|
AND A
|
||||||
JP Z,HD_CMD_0 ; ¨¨æ¨ «¨§ æ¨ï
|
JP Z,HD_CMD_0 ; 0 - ¨¨æ¨ «¨§ æ¨ï
|
||||||
DEC A
|
DEC A
|
||||||
JP Z,HD_CMD_1 ; ??
|
JP Z,HD_CMD_1 ; 1 - DIAG
|
||||||
DEC A
|
DEC A
|
||||||
JP Z,HD_CMD_2 ; â¥áâ
|
JP Z,HD_CMD_2 ; 2 - â¥áâ
|
||||||
DEC A
|
DEC A
|
||||||
JP Z,HD_CMD_3 ; preread
|
JP Z,HD_CMD_3 ; 3 - preread
|
||||||
DEC A
|
DEC A
|
||||||
JP Z,HD_CMD_4 ; read bpb
|
JP Z,HD_CMD_4 ; 4 - read bpb
|
||||||
DEC A
|
DEC A
|
||||||
JP Z,HD_CMD_5 ; read
|
JP Z,HD_CMD_5 ; 5 - read
|
||||||
DEC A
|
DEC A
|
||||||
JP Z,HD_CMD_6 ; write
|
JP Z,HD_CMD_6 ; 6 - write
|
||||||
DEC A
|
DEC A
|
||||||
JP Z,FN_HDD_PART
|
JP Z,FN_HDD_PART
|
||||||
POP AF
|
POP AF
|
||||||
@ -47,16 +46,15 @@ HD_CMD_X: ; C - COMAND ( 5 - RD, 6 - WR )
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
HD_BPB_PREP:
|
HD_BPB_PREP:
|
||||||
|
|
||||||
LD D,A
|
LD D,A
|
||||||
IN A,(PAGE3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
LD A,(HD_IDF_ADR+12)
|
LD A,(SYS_PAGE.HD_IDF_ADR.sectors)
|
||||||
LD E,A
|
LD E,A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
LD A,D
|
LD A,D
|
||||||
LD D,0
|
LD D,0
|
||||||
LD IX,0
|
LD IX,0
|
||||||
@ -76,16 +74,16 @@ HD_PREPARE:
|
|||||||
HD_PREP_L1:
|
HD_PREP_L1:
|
||||||
|
|
||||||
LD A,B
|
LD A,B
|
||||||
LD BC,P_S_CNT ; “áâ ®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï ç⥨ï
|
LD BC,IDE.Write.Counter ; “áâ ®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï ç⥨ï
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
LD BC,P_S_NUM
|
LD BC,IDE.Write.Sector
|
||||||
OUT (C),L ; ‘…Š’Ž<E28099>
|
OUT (C),L ; ‘…Š’Ž<E28099>
|
||||||
LD BC,P_C_LOW
|
LD BC,IDE.Write.CylinderLow
|
||||||
OUT (C),E ; ¤®à®¦ª low
|
OUT (C),E ; ¤®à®¦ª low
|
||||||
LD BC,P_C_HIG
|
LD BC,IDE.Write.CylinderHigh
|
||||||
OUT (C),D ; ¤®à®¦ª high
|
OUT (C),D ; ¤®à®¦ª high
|
||||||
|
|
||||||
LD BC,P_HD_CS
|
LD BC,IDE.Write.DeviceHead
|
||||||
DEC B
|
DEC B
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
AND 0F0H
|
AND 0F0H
|
||||||
@ -112,19 +110,18 @@ HD_CMD_3: ;
|
|||||||
RET C
|
RET C
|
||||||
|
|
||||||
EXX
|
EXX
|
||||||
LD C,PAGE3
|
LD C,SLOT3
|
||||||
IN B,(C)
|
IN B,(C)
|
||||||
EXX
|
EXX
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
|
||||||
LD A,0C0H
|
LD A,0C0H
|
||||||
OUT (RGADR),A
|
OUT (RGADR),A
|
||||||
|
|
||||||
LD BC,P_CMD
|
LD BC,IDE.Write.Command
|
||||||
LD A,20H
|
LD A,#20
|
||||||
; OUT (C),A
|
; OUT (C),A
|
||||||
|
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
@ -159,16 +156,16 @@ HD_RD_CMD:
|
|||||||
HD_RD_L1:
|
HD_RD_L1:
|
||||||
|
|
||||||
EXX
|
EXX
|
||||||
LD C,PAGE3
|
LD C,SLOT3
|
||||||
IN B,(C)
|
IN B,(C)
|
||||||
EXX
|
EXX
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
|
||||||
LD A,0C0H
|
LD A,0C0H
|
||||||
OUT (RGADR),A
|
OUT (RGADR),A
|
||||||
|
|
||||||
LD BC,P_CMD
|
LD BC,IDE.Write.Command
|
||||||
LD A,20H
|
LD A,20H
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
@ -184,7 +181,7 @@ HD_RET:
|
|||||||
EXX
|
EXX
|
||||||
OUT (C),B
|
OUT (C),B
|
||||||
EXX
|
EXX
|
||||||
LD BC,P_ERR
|
LD BC,IDE.Read.Error
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
AND A
|
AND A
|
||||||
SCF
|
SCF
|
||||||
@ -195,7 +192,7 @@ HD_RET:
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
HD_READ_CONT:
|
HD_READ_CONT:
|
||||||
LD BC,P_DATS
|
LD BC,IDE.Read.Data
|
||||||
|
|
||||||
HD_RD_CONT1:
|
HD_RD_CONT1:
|
||||||
DUP 16
|
DUP 16
|
||||||
@ -216,14 +213,14 @@ HD_RD_CONT2:
|
|||||||
JR NZ,HD_RD_L2
|
JR NZ,HD_RD_L2
|
||||||
|
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD HL,RAMD_FAT
|
LD HL,SYS_PAGE.RAM_TABLE
|
||||||
LD L,A
|
LD L,A
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD HL,0C000H
|
LD HL,#C000
|
||||||
JR HD_RD_L2
|
JR HD_RD_L2
|
||||||
|
|
||||||
;***********************************************
|
;***********************************************
|
||||||
@ -243,13 +240,13 @@ HD_WR_CMD:
|
|||||||
RET C
|
RET C
|
||||||
|
|
||||||
EXX
|
EXX
|
||||||
LD C,PAGE3
|
LD C,SLOT3
|
||||||
IN B,(C)
|
IN B,(C)
|
||||||
EXX
|
EXX
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
|
||||||
LD BC,P_CMD
|
LD BC,IDE.Write.Command
|
||||||
LD A,30H
|
LD A,30H
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
@ -262,7 +259,7 @@ HD_WR_L2:
|
|||||||
;#######################################
|
;#######################################
|
||||||
IF HDD_TYPE
|
IF HDD_TYPE
|
||||||
|
|
||||||
LD BC,P_DATS+100H
|
LD BC,IDE.Read.Data+100H
|
||||||
LD D,32
|
LD D,32
|
||||||
HD_WR_CONT1:
|
HD_WR_CONT1:
|
||||||
DUP 16
|
DUP 16
|
||||||
@ -274,7 +271,7 @@ HD_WR_CONT1:
|
|||||||
;#######################################
|
;#######################################
|
||||||
ELSE
|
ELSE
|
||||||
LD D,64
|
LD D,64
|
||||||
LD BC,P_DATS+100H
|
LD BC,IDE.Read.Data+100H
|
||||||
|
|
||||||
HD_WR_LOOP:
|
HD_WR_LOOP:
|
||||||
|
|
||||||
@ -316,15 +313,15 @@ HD_WR_LOOP:
|
|||||||
JR NZ,HD_WR_L2
|
JR NZ,HD_WR_L2
|
||||||
|
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD HL,RAMD_FAT
|
LD HL,SYS_PAGE.RAM_TABLE
|
||||||
LD L,A
|
LD L,A
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
|
||||||
LD HL,0C000H
|
LD HL,#C000
|
||||||
JR HD_WR_L2
|
JR HD_WR_L2
|
||||||
|
|
||||||
;********************************************************
|
;********************************************************
|
||||||
@ -333,14 +330,14 @@ HD_CMD_1:
|
|||||||
POP AF
|
POP AF
|
||||||
HD_CMD1_EX:
|
HD_CMD1_EX:
|
||||||
ld a,0A0h
|
ld a,0A0h
|
||||||
LD BC,P_HD_CS
|
LD BC,IDE.Write.DeviceHead
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
LD A,90h ; DIAGNOSTICS
|
LD A,90h ; DIAGNOSTICS
|
||||||
CALL HD_CMD_EXE
|
CALL HD_CMD_EXE
|
||||||
AND A
|
AND A
|
||||||
BIT 0,A
|
BIT 0,A
|
||||||
RET Z
|
RET Z
|
||||||
LD BC,P_ERR
|
LD BC,IDE.Read.Error
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
CP 1
|
CP 1
|
||||||
RET Z
|
RET Z
|
||||||
@ -354,7 +351,7 @@ HD_CMD_2:
|
|||||||
|
|
||||||
LD E,0
|
LD E,0
|
||||||
|
|
||||||
LD BC,P_HD_CS
|
LD BC,IDE.Write.DeviceHead
|
||||||
LD A,0A0H
|
LD A,0A0H
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
@ -364,7 +361,7 @@ HD_CMD_2:
|
|||||||
SET 0,E
|
SET 0,E
|
||||||
NO_HDD1:
|
NO_HDD1:
|
||||||
|
|
||||||
LD BC,P_HD_CS
|
LD BC,IDE.Write.DeviceHead
|
||||||
LD A,0B0H
|
LD A,0B0H
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
@ -383,24 +380,22 @@ NO_HDD2:
|
|||||||
|
|
||||||
TEST_HDD_DRV:
|
TEST_HDD_DRV:
|
||||||
LD HL,01FEH
|
LD HL,01FEH
|
||||||
LD BC,P_S_CNT
|
LD BC,IDE.Write.Counter
|
||||||
OUT (C),L
|
OUT (C),L
|
||||||
LD BC,P_S_NUM
|
LD BC,IDE.Write.Sector
|
||||||
OUT (C),H
|
OUT (C),H
|
||||||
LD BC,P_S_CNT+256
|
LD BC,IDE.Write.Counter+256
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
CP L
|
CP L
|
||||||
RET NZ
|
RET NZ
|
||||||
LD BC,P_S_NUM+256
|
LD BC,IDE.Write.Sector+256
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
CP H
|
CP H
|
||||||
RET
|
RET
|
||||||
|
|
||||||
HD_CMD_0:
|
HD_CMD_0:
|
||||||
|
|
||||||
POP AF
|
POP AF
|
||||||
|
LD BC,IDE.Write.DeviceHead
|
||||||
LD BC,P_HD_CS
|
|
||||||
LD A,0A0H
|
LD A,0A0H
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
@ -412,14 +407,14 @@ HD_C0_L3:
|
|||||||
|
|
||||||
WAIT_HDD
|
WAIT_HDD
|
||||||
|
|
||||||
LD BC,P_CMD
|
LD BC,IDE.Write.Command
|
||||||
LD A,0ECH
|
LD A,0ECH
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
WAIT_HDD
|
WAIT_HDD
|
||||||
;HD_C0_L1:
|
;HD_C0_L1:
|
||||||
;
|
;
|
||||||
; LD BC,P_HDST
|
; LD BC,IDE.Read.Status
|
||||||
; IN A,(C)
|
; IN A,(C)
|
||||||
; BIT 7,A
|
; BIT 7,A
|
||||||
; JR NZ,HD_C0_L1
|
; JR NZ,HD_C0_L1
|
||||||
@ -431,7 +426,7 @@ HD_C0_L3:
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
HD_ABSENT:
|
HD_ABSENT:
|
||||||
LD BC,P_HD_CS
|
LD BC,IDE.Write.DeviceHead
|
||||||
LD A,0B0H
|
LD A,0B0H
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
@ -442,40 +437,40 @@ HD_ABSENT:
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
HD_C0_L2:
|
HD_C0_L2:
|
||||||
LD BC,P_DATS
|
LD BC,IDE.Read.Data
|
||||||
LD HL,HD_IDF_ADR
|
LD HL,SYS_PAGE.HD_IDF_ADR
|
||||||
IN A,(PAGE3)
|
IN A,(SLOT3)
|
||||||
LD D,A
|
LD D,A
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
INIR
|
INIR
|
||||||
INIR
|
INIR
|
||||||
|
|
||||||
;HD_C0_L4:
|
;HD_C0_L4:
|
||||||
; LD BC,P_HDST
|
; LD BC,IDE.Read.Status
|
||||||
; IN A,(C)
|
; IN A,(C)
|
||||||
; BIT 7,A
|
; BIT 7,A
|
||||||
; JR NZ,HD_C0_L4
|
; JR NZ,HD_C0_L4
|
||||||
|
|
||||||
LD A,(HD_IDF_ADR+12) ; ç¨á«® ᥪâ®à®¢
|
LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
|
||||||
LD C,A
|
LD C,A
|
||||||
LD B,0
|
LD B,0
|
||||||
LD HL,0
|
LD HL,0
|
||||||
LD A,(HD_IDF_ADR+6) ; ç¨á«® £®«®¢®ª
|
LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
|
||||||
LOOP_XX:
|
LOOP_XX:
|
||||||
ADD HL,BC
|
ADD HL,BC
|
||||||
DEC A
|
DEC A
|
||||||
JR NZ,LOOP_XX
|
JR NZ,LOOP_XX
|
||||||
LD (HD_IDF_ADR+4),HL
|
LD (SYS_PAGE.HD_IDF_ADR.sec_cyl),HL
|
||||||
|
|
||||||
WAIT_HDD
|
WAIT_HDD
|
||||||
|
|
||||||
LD BC,P_HD_CS
|
LD BC,IDE.Write.DeviceHead
|
||||||
DEC B
|
DEC B
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
AND 010H
|
AND 010H
|
||||||
LD B,A
|
LD B,A
|
||||||
LD A,(HD_IDF_ADR+6) ; ç¨á«® £®«®¢®ª
|
LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
|
||||||
|
|
||||||
DEC A
|
DEC A
|
||||||
AND 0FH
|
AND 0FH
|
||||||
@ -483,22 +478,22 @@ LOOP_XX:
|
|||||||
OR B
|
OR B
|
||||||
|
|
||||||
LD H,A
|
LD H,A
|
||||||
LD A,(HD_IDF_ADR+99)
|
LD A,(SYS_PAGE.HD_IDF_ADR+99) ;!HARDCODE
|
||||||
BIT 1,A
|
BIT 1,A
|
||||||
JR Z,HD_C0_NO_LBA
|
JR Z,HD_C0_NO_LBA
|
||||||
|
|
||||||
SET 6,H
|
SET 6,H
|
||||||
|
|
||||||
HD_C0_NO_LBA:
|
HD_C0_NO_LBA:
|
||||||
LD BC,P_HD_CS
|
LD BC,IDE.Write.DeviceHead
|
||||||
OUT (C),H
|
OUT (C),H
|
||||||
|
|
||||||
LD A,(HD_IDF_ADR+12) ; ç¨á«® ᥪâ®à®¢
|
LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
|
||||||
|
|
||||||
LD BC,P_S_CNT
|
LD BC,IDE.Write.Counter
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
LD A,D
|
LD A,D
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
LD A,91H ; SET HDD PARAMETERS
|
LD A,91H ; SET HDD PARAMETERS
|
||||||
CALL HD_CMD_EXE
|
CALL HD_CMD_EXE
|
||||||
@ -512,7 +507,7 @@ HD_C0_NO_LBA:
|
|||||||
HD_CMD_EXE:
|
HD_CMD_EXE:
|
||||||
CALL HD_WAIT
|
CALL HD_WAIT
|
||||||
RET C
|
RET C
|
||||||
LD BC,P_CMD
|
LD BC,IDE.Write.Command
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
HD_WAIT:
|
HD_WAIT:
|
||||||
PUSH DE
|
PUSH DE
|
||||||
@ -522,7 +517,7 @@ HD_WAIT:
|
|||||||
LD DE,0
|
LD DE,0
|
||||||
|
|
||||||
HD_WAIT1:
|
HD_WAIT1:
|
||||||
LD BC,P_HDST
|
LD BC,IDE.Read.Status
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
BIT 7,A
|
BIT 7,A
|
||||||
JR Z,HD_W_EXIT
|
JR Z,HD_W_EXIT
|
||||||
@ -565,7 +560,7 @@ HD_CALC_SECS:
|
|||||||
RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD..
|
RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD..
|
||||||
|
|
||||||
PUSH BC
|
PUSH BC
|
||||||
LD BC,P_HD_CS
|
LD BC,IDE.Write.DeviceHead
|
||||||
DEC B
|
DEC B
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
BIT 6,A
|
BIT 6,A
|
||||||
@ -577,14 +572,14 @@ HD_CALC_SECS:
|
|||||||
PUSH IX
|
PUSH IX
|
||||||
POP HL
|
POP HL
|
||||||
|
|
||||||
IN A,(PAGE3)
|
IN A,(SLOT3)
|
||||||
LD C,A
|
LD C,A
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
LD A,C
|
LD A,C
|
||||||
LD (COPY_PAGE3),A
|
LD (SYS_PAGE.COPY_SLOT3),A
|
||||||
|
|
||||||
LD BC,(HD_IDF_ADR+4) ; ç¨á«® ᥪâ®à®¢ 樫¨¤à¥
|
LD BC,(SYS_PAGE.HD_IDF_ADR.sec_cyl) ; ç¨á«® ᥪâ®à®¢ 樫¨¤à¥
|
||||||
|
|
||||||
; HL,DE - ®¬¥à ᥪâ®à
|
; HL,DE - ®¬¥à ᥪâ®à
|
||||||
; BC - ç¨á«® ᥪâ®à®¢ 樫¨¤à¥
|
; BC - ç¨á«® ᥪâ®à®¢ 樫¨¤à¥
|
||||||
@ -609,7 +604,7 @@ NO_ADD: INC DE
|
|||||||
DIV_END: ; DE - १ã«ìâ â, HL - ®áâ ⮪
|
DIV_END: ; DE - १ã«ìâ â, HL - ®áâ ⮪
|
||||||
|
|
||||||
; DE - 樫¨¤à
|
; DE - 樫¨¤à
|
||||||
LD A,(HD_IDF_ADR+12) ; A - ç¨á«® ᥪâ®à®¢ ¤®à®¦ª¥
|
LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; A - ç¨á«® ᥪâ®à®¢ ¤®à®¦ª¥
|
||||||
; HL - ®¬¥à ᥪâ®à ¢ 樫¨¤à¥
|
; HL - ®¬¥à ᥪâ®à ¢ 樫¨¤à¥
|
||||||
LD B,0
|
LD B,0
|
||||||
LD C,A
|
LD C,A
|
||||||
@ -626,8 +621,8 @@ HD_CALC_LOOP2:
|
|||||||
INC L
|
INC L
|
||||||
LD H,A ; HL - HEAD,SEC
|
LD H,A ; HL - HEAD,SEC
|
||||||
|
|
||||||
LD A,(COPY_PAGE3)
|
LD A,(SYS_PAGE.COPY_SLOT3)
|
||||||
OUT (PAGE3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
POP BC
|
POP BC
|
||||||
AND A
|
AND A
|
||||||
@ -636,11 +631,11 @@ HD_CALC_LOOP2:
|
|||||||
FN_HDD_PART:
|
FN_HDD_PART:
|
||||||
POP AF
|
POP AF
|
||||||
BIT 0,A
|
BIT 0,A
|
||||||
LD A,#21 ; !HARDCODE
|
LD A,IDE.Chanel.Primary
|
||||||
JR Z,.SET_CH
|
JR Z,.SET_CH
|
||||||
LD A,#01 ; !HARDCODE
|
LD A,IDE.Chanel.Secondary
|
||||||
.SET_CH:
|
.SET_CH:
|
||||||
OUT (#BC),A ; !HARDCODE IDE.Chanel.Choose
|
OUT (IDE.Chanel.Set),A
|
||||||
RET
|
RET
|
||||||
; DB 'HDD_DRV_END'
|
; DB 'HDD_DRV_END'
|
||||||
|
|
||||||
|
|||||||
@ -868,7 +868,7 @@ LP_BEG_P:
|
|||||||
; for low printer & save
|
; for low printer & save
|
||||||
|
|
||||||
WIN_GET_ZG: ; DE - ¤à¥á ªã¤ ¯¥à¥á« âì ä®â
|
WIN_GET_ZG: ; DE - ¤à¥á ªã¤ ¯¥à¥á« âì ä®â
|
||||||
LD HL,ZG_ADRESS
|
LD HL,ZG_ADDRESS
|
||||||
LD BC,800H
|
LD BC,800H
|
||||||
LDIR
|
LDIR
|
||||||
AND A
|
AND A
|
||||||
@ -1837,19 +1837,22 @@ WIN_PUT_SYM: ; DE -
|
|||||||
CALL LP_END_P
|
CALL LP_END_P
|
||||||
RET
|
RET
|
||||||
|
|
||||||
WIN_MOVE_WIN: ; HL - à §¬¥à ®ª
|
; HL - à §¬¥à ®ª
|
||||||
; DE - ¯®«®¦¥¨¥ ®ª
|
; DE - ¯®«®¦¥¨¥ ®ª
|
||||||
AND A ; A - ®¬¥à ®ª
|
; A - ®¬¥à ®ª
|
||||||
SCF ; IX - ®¢®¥ ¯®«®¦¥¨¥ ®ª
|
; IX - ®¢®¥ ¯®«®¦¥¨¥ ®ª
|
||||||
|
WIN_MOVE_WIN:
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
RET NZ
|
RET NZ
|
||||||
PUSH IX
|
PUSH IX
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD B,0FFH
|
LD B,0FFH ;!HARDCODE SHARED_PAGE
|
||||||
LD IX,0C000H
|
LD IX,0C000H
|
||||||
CALL WIN_COPY_WIN1
|
CALL WIN_COPY_WIN1
|
||||||
POP HL
|
POP HL
|
||||||
POP DE
|
POP DE
|
||||||
LD B,0FFH
|
LD B,0FFH ;!HARDCODE SHARED_PAGE
|
||||||
LD IX,0C000H
|
LD IX,0C000H
|
||||||
CALL WIN_REST_WIN1
|
CALL WIN_REST_WIN1
|
||||||
AND A
|
AND A
|
||||||
|
|||||||
@ -33,16 +33,15 @@ PIC_S MACRO pg,cnt,adr
|
|||||||
ALIGN 8
|
ALIGN 8
|
||||||
LP_SCR_MNU:
|
LP_SCR_MNU:
|
||||||
;
|
;
|
||||||
; LP_S 040h,14,040E7H
|
; LP_S %0100'0000,14,#40E7
|
||||||
;
|
; LP_S %0100'0000,14,#4807
|
||||||
; LP_S 040h,14,04807H
|
; LP_S %0100'0000,14,#4827
|
||||||
; LP_S 040h,14,04827H
|
; LP_S %0100'0000,14,#4847
|
||||||
; LP_S 040h,14,04847H
|
; LP_S %0100'0000,14,#4867
|
||||||
; LP_S 040h,14,04867H
|
; LP_S %0100'0000,14,#4887
|
||||||
; LP_S 040h,14,04887H
|
; LP_S %0100'0000,14,#48A7
|
||||||
; LP_S 040h,14,048A7H
|
; LP_S %0100'0000,14,#48C7
|
||||||
; LP_S 040h,14,048C7H
|
; LP_S %0100'0000,14,#48E7
|
||||||
; LP_S 040h,14,048E7H
|
|
||||||
;
|
;
|
||||||
; DEFB 0FFh,0,0,0
|
; DEFB 0FFh,0,0,0
|
||||||
|
|
||||||
@ -50,43 +49,43 @@ LP_SCR_80:
|
|||||||
DB 40,32,0,0,1BH,0,0,0
|
DB 40,32,0,0,1BH,0,0,0
|
||||||
DB 0,0,0,0,0,0,0,0
|
DB 0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
; LP_S 01100010B,40,4000H
|
; LP_S %0110'0010,40,4000H
|
||||||
; LP_S 01100010B,40,4028H
|
; LP_S %0110'0010,40,4028H
|
||||||
; LP_S 01100010B,40,4050H
|
; LP_S %0110'0010,40,4050H
|
||||||
; LP_S 01100010B,40,4078H
|
; LP_S %0110'0010,40,4078H
|
||||||
; LP_S 01100010B,40,40A0H
|
; LP_S %0110'0010,40,40A0H
|
||||||
; LP_S 01100010B,40,40C8H
|
; LP_S %0110'0010,40,40C8H
|
||||||
;
|
;
|
||||||
; LP_S 01100010B,40,4800H
|
; LP_S %0110'0010,40,4800H
|
||||||
; LP_S 01100010B,40,4828H
|
; LP_S %0110'0010,40,4828H
|
||||||
; LP_S 01100010B,40,4850H
|
; LP_S %0110'0010,40,4850H
|
||||||
; LP_S 01100010B,40,4878H
|
; LP_S %0110'0010,40,4878H
|
||||||
; LP_S 01100010B,40,48A0H
|
; LP_S %0110'0010,40,48A0H
|
||||||
; LP_S 01100010B,40,48C8H
|
; LP_S %0110'0010,40,48C8H
|
||||||
;
|
;
|
||||||
; LP_S 01100010B,40,5000H
|
; LP_S %0110'0010,40,5000H
|
||||||
; LP_S 01100010B,40,5028H
|
; LP_S %0110'0010,40,5028H
|
||||||
; LP_S 01100010B,40,5050H
|
; LP_S %0110'0010,40,5050H
|
||||||
; LP_S 01100010B,40,5078H
|
; LP_S %0110'0010,40,5078H
|
||||||
; LP_S 01100010B,40,50A0H
|
; LP_S %0110'0010,40,50A0H
|
||||||
; LP_S 01100010B,40,50C8H
|
; LP_S %0110'0010,40,50C8H
|
||||||
;
|
;
|
||||||
; LP_S 01100100B,40,4000H
|
; LP_S %0110'0100,40,4000H
|
||||||
; LP_S 01100100B,40,4028H
|
; LP_S %0110'0100,40,4028H
|
||||||
; LP_S 01100100B,40,4050H
|
; LP_S %0110'0100,40,4050H
|
||||||
; LP_S 01100100B,40,4078H
|
; LP_S %0110'0100,40,4078H
|
||||||
; LP_S 01100100B,40,40A0H
|
; LP_S %0110'0100,40,40A0H
|
||||||
; LP_S 01100100B,40,40C8H
|
; LP_S %0110'0100,40,40C8H
|
||||||
;
|
;
|
||||||
; LP_S 01100100B,40,4800H
|
; LP_S %0110'0100,40,4800H
|
||||||
; LP_S 01100100B,40,4828H
|
; LP_S %0110'0100,40,4828H
|
||||||
; LP_S 01100100B,40,4850H
|
; LP_S %0110'0100,40,4850H
|
||||||
; LP_S 01100100B,40,4878H
|
; LP_S %0110'0100,40,4878H
|
||||||
; LP_S 01100100B,40,48A0H
|
; LP_S %0110'0100,40,48A0H
|
||||||
; LP_S 01100100B,40,48C8H
|
; LP_S %0110'0100,40,48C8H
|
||||||
;
|
;
|
||||||
; LP_S 01100100B,40,5000H
|
; LP_S %0110'0100,40,5000H
|
||||||
; LP_S 01100100B,40,5028H
|
; LP_S %0110'0100,40,5028H
|
||||||
;
|
;
|
||||||
; DEFB 0FFh,0,0,0
|
; DEFB 0FFh,0,0,0
|
||||||
;
|
;
|
||||||
@ -94,43 +93,43 @@ LP_SCR_40:
|
|||||||
DB 40,32,0,0,7BH,0,0,0
|
DB 40,32,0,0,7BH,0,0,0
|
||||||
DB 0,0,0,0,0,0,0,0
|
DB 0,0,0,0,0,0,0,0
|
||||||
;
|
;
|
||||||
; LP_S 01000100B,40,5050H
|
; LP_S %0100'0100,40,5050H
|
||||||
; LP_S 01000100B,40,5078H
|
; LP_S %0100'0100,40,5078H
|
||||||
; LP_S 01000100B,40,50A0H
|
; LP_S %0100'0100,40,50A0H
|
||||||
; LP_S 01000100B,40,50C8H
|
; LP_S %0100'0100,40,50C8H
|
||||||
;
|
;
|
||||||
; LP_S 01000110B,40,4000H
|
; LP_S %0100'0110,40,4000H
|
||||||
; LP_S 01000110B,40,4028H
|
; LP_S %0100'0110,40,4028H
|
||||||
; LP_S 01000110B,40,4050H
|
; LP_S %0100'0110,40,4050H
|
||||||
; LP_S 01000110B,40,4078H
|
; LP_S %0100'0110,40,4078H
|
||||||
; LP_S 01000110B,40,40A0H
|
; LP_S %0100'0110,40,40A0H
|
||||||
; LP_S 01000110B,40,40C8H
|
; LP_S %0100'0110,40,40C8H
|
||||||
;
|
;
|
||||||
; LP_S 01000110B,40,4800H
|
; LP_S %0100'0110,40,4800H
|
||||||
; LP_S 01000110B,40,4828H
|
; LP_S %0100'0110,40,4828H
|
||||||
; LP_S 01000110B,40,4850H
|
; LP_S %0100'0110,40,4850H
|
||||||
; LP_S 01000110B,40,4878H
|
; LP_S %0100'0110,40,4878H
|
||||||
; LP_S 01000110B,40,48A0H
|
; LP_S %0100'0110,40,48A0H
|
||||||
; LP_S 01000110B,40,48C8H
|
; LP_S %0100'0110,40,48C8H
|
||||||
;
|
;
|
||||||
; LP_S 01000110B,40,5000H
|
; LP_S %0100'0110,40,5000H
|
||||||
; LP_S 01000110B,40,5028H
|
; LP_S %0100'0110,40,5028H
|
||||||
; LP_S 01000110B,40,5050H
|
; LP_S %0100'0110,40,5050H
|
||||||
; LP_S 01000110B,40,5078H
|
; LP_S %0100'0110,40,5078H
|
||||||
; LP_S 01000110B,40,50A0H
|
; LP_S %0100'0110,40,50A0H
|
||||||
; LP_S 01000110B,40,50C8H
|
; LP_S %0100'0110,40,50C8H
|
||||||
;
|
;
|
||||||
; LP_S 01001000B,40,4000H
|
; LP_S %0100'1000,40,4000H
|
||||||
; LP_S 01001000B,40,4028H
|
; LP_S %0100'1000,40,4028H
|
||||||
; LP_S 01001000B,40,4050H
|
; LP_S %0100'1000,40,4050H
|
||||||
; LP_S 01001000B,40,4078H
|
; LP_S %0100'1000,40,4078H
|
||||||
; LP_S 01001000B,40,40A0H
|
; LP_S %0100'1000,40,40A0H
|
||||||
; LP_S 01001000B,40,40C8H
|
; LP_S %0100'1000,40,40C8H
|
||||||
;
|
;
|
||||||
; LP_S 01001000B,40,4800H
|
; LP_S %0100'1000,40,4800H
|
||||||
; LP_S 01001000B,40,4828H
|
; LP_S %0100'1000,40,4828H
|
||||||
; LP_S 01001000B,40,4850H
|
; LP_S %0100'1000,40,4850H
|
||||||
; LP_S 01001000B,40,4878H
|
; LP_S %0100'1000,40,4878H
|
||||||
;
|
;
|
||||||
; DEFB 0FFh,0,0,0
|
; DEFB 0FFh,0,0,0
|
||||||
;
|
;
|
||||||
@ -138,68 +137,66 @@ LP_SCR_32:
|
|||||||
DB 32,24,4,4,30H,1,0,0
|
DB 32,24,4,4,30H,1,0,0
|
||||||
DB 0,0,0,0,0,0,0,0
|
DB 0,0,0,0,0,0,0,0
|
||||||
;
|
;
|
||||||
; LP_S 040h,32,04000H
|
; LP_S %040h',32,4000H
|
||||||
; LP_S 040h,32,04020H
|
; LP_S %040h',32,4020H
|
||||||
; LP_S 040h,32,04040H
|
; LP_S %040h',32,4040H
|
||||||
; LP_S 040h,32,04060H
|
; LP_S %040h',32,4060H
|
||||||
; LP_S 040h,32,04080H
|
; LP_S %040h',32,4080H
|
||||||
; LP_S 040h,32,040A0H
|
; LP_S %040h',32,40A0H
|
||||||
; LP_S 040h,32,040C0H
|
; LP_S %040h',32,40C0H
|
||||||
; LP_S 040h,32,040E0H
|
; LP_S %040h',32,40E0H
|
||||||
;
|
;
|
||||||
; LP_S 040h,32,04800H
|
; LP_S %040h',32,4800H
|
||||||
; LP_S 040h,32,04820H
|
; LP_S %040h',32,4820H
|
||||||
; LP_S 040h,32,04840H
|
; LP_S %040h',32,4840H
|
||||||
; LP_S 040h,32,04860H
|
; LP_S %040h',32,4860H
|
||||||
; LP_S 040h,32,04880H
|
; LP_S %040h',32,4880H
|
||||||
; LP_S 040h,32,048A0H
|
; LP_S %040h',32,48A0H
|
||||||
; LP_S 040h,32,048C0H
|
; LP_S %040h',32,48C0H
|
||||||
; LP_S 040h,32,048E0H
|
; LP_S %040h',32,48E0H
|
||||||
;
|
;
|
||||||
; LP_S 040h,32,05000H
|
; LP_S %040h',32,5000H
|
||||||
; LP_S 040h,32,05020H
|
; LP_S %040h',32,5020H
|
||||||
; LP_S 040h,32,05040H
|
; LP_S %040h',32,5040H
|
||||||
; LP_S 040h,32,05060H
|
; LP_S %040h',32,5060H
|
||||||
; LP_S 040h,32,05080H
|
; LP_S %040h',32,5080H
|
||||||
; LP_S 040h,32,050A0H
|
; LP_S %040h',32,50A0H
|
||||||
; LP_S 040h,32,050C0H
|
; LP_S %040h',32,50C0H
|
||||||
; LP_S 040h,32,050E0H
|
; LP_S %040h',32,50E0H
|
||||||
;
|
|
||||||
; LP_S 0FFh,0,0
|
|
||||||
;
|
;
|
||||||
|
; LP_S %0FFh',0,0;
|
||||||
LP_SCR_64:
|
LP_SCR_64:
|
||||||
DB 32,24,4,4,9BH,0,0,0
|
DB 32,24,4,4,9BH,0,0,0
|
||||||
DB 0,0,0,0,0,0,0,0
|
DB 0,0,0,0,0,0,0,0
|
||||||
;
|
;
|
||||||
; LP_S 06Ah,32,04000H
|
; LP_S %06Ah',32,4000H
|
||||||
; LP_S 06Ah,32,04020H
|
; LP_S %06Ah',32,4020H
|
||||||
; LP_S 06Ah,32,04040H
|
; LP_S %06Ah',32,4040H
|
||||||
; LP_S 06Ah,32,04060H
|
; LP_S %06Ah',32,4060H
|
||||||
; LP_S 06Ah,32,04080H
|
; LP_S %06Ah',32,4080H
|
||||||
; LP_S 06Ah,32,040A0H
|
; LP_S %06Ah',32,40A0H
|
||||||
; LP_S 06Ah,32,040C0H
|
; LP_S %06Ah',32,40C0H
|
||||||
; LP_S 06Ah,32,040E0H
|
; LP_S %06Ah',32,40E0H
|
||||||
;
|
;
|
||||||
; LP_S 06Ah,32,04800H
|
; LP_S %06Ah',32,4800H
|
||||||
; LP_S 06Ah,32,04820H
|
; LP_S %06Ah',32,4820H
|
||||||
; LP_S 06Ah,32,04840H
|
; LP_S %06Ah',32,4840H
|
||||||
; LP_S 06Ah,32,04860H
|
; LP_S %06Ah',32,4860H
|
||||||
; LP_S 06Ah,32,04880H
|
; LP_S %06Ah',32,4880H
|
||||||
; LP_S 06Ah,32,048A0H
|
; LP_S %06Ah',32,48A0H
|
||||||
; LP_S 06Ah,32,048C0H
|
; LP_S %06Ah',32,48C0H
|
||||||
; LP_S 06Ah,32,048E0H
|
; LP_S %06Ah',32,48E0H
|
||||||
;
|
;
|
||||||
; LP_S 06Ah,32,05000H
|
; LP_S %06Ah',32,5000H
|
||||||
; LP_S 06Ah,32,05020H
|
; LP_S %06Ah',32,5020H
|
||||||
; LP_S 06Ah,32,05040H
|
; LP_S %06Ah',32,5040H
|
||||||
; LP_S 06Ah,32,05060H
|
; LP_S %06Ah',32,5060H
|
||||||
; LP_S 06Ah,32,05080H
|
; LP_S %06Ah',32,5080H
|
||||||
; LP_S 06Ah,32,050A0H
|
; LP_S %06Ah',32,50A0H
|
||||||
; LP_S 06Ah,32,050C0H
|
; LP_S %06Ah',32,50C0H
|
||||||
; LP_S 06Ah,32,050E0H
|
; LP_S %06Ah',32,50E0H
|
||||||
;
|
;
|
||||||
; LP_S 0FFh,0,0
|
; LP_S %0FFh',0,0
|
||||||
|
|
||||||
PIC_320X256_1:
|
PIC_320X256_1:
|
||||||
DB 40,32,0,0,20H,0,8,0
|
DB 40,32,0,0,20H,0,8,0
|
||||||
DB 0,0,0,0,0,0,0,0
|
DB 0,0,0,0,0,0,0,0
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
ZG_ADRESS:
|
ZG_ADDRESS:
|
||||||
DB 000h,07Eh,07Eh,06Ch,010h,038h,010h,000h,0FFh,000h,0FFh,00Fh,03Ch,03Fh,07Fh,018h
|
DB 000h,07Eh,07Eh,06Ch,010h,038h,010h,000h,0FFh,000h,0FFh,00Fh,03Ch,03Fh,07Fh,018h
|
||||||
DB 080h,002h,018h,066h,07Fh,03Eh,000h,018h,018h,018h,000h,000h,000h,000h,000h,000h
|
DB 080h,002h,018h,066h,07Fh,03Eh,000h,018h,018h,018h,000h,000h,000h,000h,000h,000h
|
||||||
DB 000h,030h,06Ch,06Ch,030h,000h,038h,060h,018h,060h,000h,000h,000h,000h,000h,006h
|
DB 000h,030h,06Ch,06Ch,030h,000h,038h,060h,018h,060h,000h,000h,000h,000h,000h,006h
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
SERVICE:
|
SERVICE:
|
||||||
LD HL,SR_TAB
|
LD HL,SR_TAB
|
||||||
LD DE,SR_MENU
|
LD DE,SR_MENU
|
||||||
LD BC,SR_LEN
|
LD BC,SR_MENU.Size
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL RUN_MENU ;09f3
|
CALL RUN_MENU ;09f3
|
||||||
POP HL
|
POP HL
|
||||||
@ -30,9 +30,8 @@ SR_MENU:
|
|||||||
DC 'TURBO ON '
|
DC 'TURBO ON '
|
||||||
DC 'Clear RAM'
|
DC 'Clear RAM'
|
||||||
DC 'RETURN'
|
DC 'RETURN'
|
||||||
DC ' ' ; ¬ àª¥à ª®æ
|
DC " " ; ¬ àª¥à ª®æ
|
||||||
|
.Size EQU $-SR_MENU
|
||||||
SR_LEN EQU $-SR_MENU
|
|
||||||
|
|
||||||
;*****************************
|
;*****************************
|
||||||
|
|
||||||
@ -109,7 +108,7 @@ CLEAR_RAM:
|
|||||||
RST 18h
|
RST 18h
|
||||||
IFDEF ZX_BIOS
|
IFDEF ZX_BIOS
|
||||||
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥î ᯥªâà㬠¯®«®¬ ¥âáï ¢®§¢à â ¢ DSS ¯® CAD, ¯®í⮬㠮⪫îç ¥¬ ¢®§¢à â
|
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥î ᯥªâà㬠¯®«®¬ ¥âáï ¢®§¢à â ¢ DSS ¯® CAD, ¯®í⮬㠮⪫îç ¥¬ ¢®§¢à â
|
||||||
LD A,#EE ;!HARDCODE Conf_port.RET_PORT
|
LD A,#EE ;!HARDCODE ACEX.RET_PORT
|
||||||
LD BC,0*256 + #F8 ;!HARDCODE BIOS.SET_PORTS
|
LD BC,0*256 + #F8 ;!HARDCODE BIOS.SET_PORTS
|
||||||
CALL #3D13 ;!HARDCODE ToBIOS_3D13
|
CALL #3D13 ;!HARDCODE ToBIOS_3D13
|
||||||
ENDIF
|
ENDIF
|
||||||
@ -177,7 +176,7 @@ IS_MENU:
|
|||||||
DC 'Pentagon 512'
|
DC 'Pentagon 512'
|
||||||
DC 'Restart '
|
DC 'Restart '
|
||||||
DC 'RETURN'
|
DC 'RETURN'
|
||||||
DC ' ' ; ¬ àª¥à ª®æ
|
DC " " ; ¬ àª¥à ª®æ
|
||||||
.Size EQU $-IS_MENU
|
.Size EQU $-IS_MENU
|
||||||
|
|
||||||
;******************************
|
;******************************
|
||||||
@ -218,10 +217,10 @@ SPRINTER_2X:
|
|||||||
JP RESET_1 ; á¡à®á ¡¥§ ¯¥à¥§ £à㧪¨
|
JP RESET_1 ; á¡à®á ¡¥§ ¯¥à¥§ £à㧪¨
|
||||||
|
|
||||||
AY8910:
|
AY8910:
|
||||||
LD D,#35
|
;LD D,#35
|
||||||
CALL CMOS_RD
|
;CALL CMOS_RD
|
||||||
OR 1
|
;OR 1
|
||||||
CALL CMOS_WR
|
;CALL CMOS_WR
|
||||||
|
|
||||||
LD BC,204Eh ; port all_mode
|
LD BC,204Eh ; port all_mode
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
@ -232,10 +231,10 @@ AY8910:
|
|||||||
JR SPRINTER_ALL
|
JR SPRINTER_ALL
|
||||||
|
|
||||||
SPRINTER_1:
|
SPRINTER_1:
|
||||||
LD D,35H
|
;LD D,35H
|
||||||
CALL CMOS_RD
|
;CALL CMOS_RD
|
||||||
AND 0FEh
|
;AND 0FEh
|
||||||
CALL CMOS_WR
|
;CALL CMOS_WR
|
||||||
|
|
||||||
LD BC,204Eh
|
LD BC,204Eh
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
@ -627,12 +626,12 @@ SCORPION:
|
|||||||
|
|
||||||
PENTAGON:
|
PENTAGON:
|
||||||
CALL CNF_PN_320
|
CALL CNF_PN_320
|
||||||
LD DE,CNF_2+D_TBON
|
LD DE,CNF_1+D_TBON
|
||||||
JR CONFIG_SET1
|
JR CONFIG_SET1
|
||||||
|
|
||||||
PENTAGON512:
|
PENTAGON512:
|
||||||
CALL CNF_PN_320
|
CALL CNF_PN_320
|
||||||
LD DE,CNF_2+D_TBON+CNF_512
|
LD DE,CNF_1+D_TBON+CNF_512
|
||||||
; JR CONFIG_SET1
|
; JR CONFIG_SET1
|
||||||
|
|
||||||
CONFIG_SET1:
|
CONFIG_SET1:
|
||||||
@ -691,7 +690,7 @@ UTILIT:
|
|||||||
|
|
||||||
CALL DOS_ON
|
CALL DOS_ON
|
||||||
LD A,0 ; DETECT_HDD
|
LD A,0 ; DETECT_HDD
|
||||||
CALL HDD_EXE
|
CALL EXP_HDD
|
||||||
CALL DOS_OFF
|
CALL DOS_OFF
|
||||||
|
|
||||||
JR C,DISK_UTILIT
|
JR C,DISK_UTILIT
|
||||||
|
|||||||
@ -277,9 +277,9 @@ ERR_TST_M:
|
|||||||
;**************************************
|
;**************************************
|
||||||
|
|
||||||
CALL_DOS_MOVE:
|
CALL_DOS_MOVE:
|
||||||
LD DE,5C00H-DOS_PROG_LEN
|
LD DE,DOS_PROG.Exec
|
||||||
LD HL,DOS_PROG
|
LD HL,DOS_PROG
|
||||||
LD BC,DOS_PROG_LEN
|
LD BC,DOS_PROG.Size
|
||||||
LDIR
|
LDIR
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
@ -295,34 +295,36 @@ CALL_DOS1:
|
|||||||
LD (5C63H),DE
|
LD (5C63H),DE
|
||||||
LD (5C65H),DE
|
LD (5C65H),DE
|
||||||
CALL CALL_DOS_MOVE
|
CALL CALL_DOS_MOVE
|
||||||
JP 5C00H-DOS_PROG_LEN
|
JP DOS_PROG.Exec
|
||||||
CALL_DOS:
|
CALL_DOS:
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
PUSH BC
|
PUSH BC
|
||||||
PUSH AF
|
PUSH AF
|
||||||
CALL CALL_DOS_MOVE
|
CALL CALL_DOS_MOVE
|
||||||
LD A,13H
|
LD A,#13 ; #13 ¨§ AUTO_1303
|
||||||
LD (5C00H-DOS_PROG_LEN+DOS_PROG_A),A
|
LD (DOS_PROG.Patch),A
|
||||||
POP AF
|
POP AF
|
||||||
POP BC
|
POP BC
|
||||||
POP DE
|
POP DE
|
||||||
POP HL
|
POP HL
|
||||||
JP 5C00H-DOS_PROG_LEN
|
JP DOS_PROG.Exec
|
||||||
|
|
||||||
DOS_PROG:
|
DOS_PROG:
|
||||||
PUSH AF
|
DISP #5C00 - DOS_PROG.Size ;!HARDCODE
|
||||||
XOR A
|
.Exec: PUSH AF
|
||||||
OUT (SYS_PORT_OFF),A
|
XOR A
|
||||||
POP AF
|
OUT (SYS_PORT_OFF),A
|
||||||
CALL 3D03H
|
POP AF
|
||||||
DOS_PROG_A EQU $-DOS_PROG-1
|
.Patch+2: CALL #3D03
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD A,0
|
LD A,0
|
||||||
OUT (CNF_PORT),A
|
OUT (CNF_PORT),A
|
||||||
POP AF
|
POP AF
|
||||||
RET
|
RET
|
||||||
DOS_PROG_LEN EQU $-DOS_PROG
|
.Size EQU $ - .Exec
|
||||||
|
ENT
|
||||||
|
|
||||||
|
|
||||||
CONT_PROG:
|
CONT_PROG:
|
||||||
LD HL,1AFDH
|
LD HL,1AFDH
|
||||||
@ -334,7 +336,4 @@ CONT_PROG:
|
|||||||
LD A,0E8H
|
LD A,0E8H
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
JP SW_ROM
|
JP SW_ROM
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
73
ZX_EXP2.ASM
73
ZX_EXP2.ASM
@ -3,27 +3,28 @@
|
|||||||
DEVICE ZXSPECTRUM128
|
DEVICE ZXSPECTRUM128
|
||||||
ORG 0
|
ORG 0
|
||||||
|
|
||||||
INCLUDE 'INC/SPRINT00.INC' ; ª®áâ âë, ¬ ªà®áë..
|
;INCLUDE 'INC/SPRINT00.INC' ; ª®áâ âë, ¬ ªà®áë..
|
||||||
;******************************
|
INCLUDE 'shared_includes/constants/sp2000.INC' ; ª®áâ âë, ¬ ªà®áë..
|
||||||
; ***** BEGIN EXPANSION *****
|
; ***************************
|
||||||
;******************************
|
; ***** BEGIN EXPANSION *****
|
||||||
|
; ***************************
|
||||||
START:
|
START:
|
||||||
DI
|
DI
|
||||||
HALT
|
HALT
|
||||||
;***************************
|
;***********************************************************************;
|
||||||
BLOCK #10-$,255
|
BLOCK #10-$,255
|
||||||
RET
|
RET
|
||||||
;***************************
|
;***********************************************************************;
|
||||||
BLOCK #38-$,255
|
BLOCK #38-$,255
|
||||||
EI
|
EI
|
||||||
RETI
|
RETI
|
||||||
;***************************
|
;***********************************************************************;
|
||||||
BLOCK #66-$,#C9
|
BLOCK #66-$,#C9
|
||||||
RETN
|
RETN
|
||||||
|
|
||||||
;***************************
|
;***********************************************************************;
|
||||||
BLOCK #100-$,255
|
BLOCK #100-$,255
|
||||||
INCLUDE 'EXP/EXP_HDD.ASM'
|
INCLUDE 'ZX_EXP/EXP_HDD.ASM'
|
||||||
; INCLUDE 'EXP_KBD.ASZ'
|
; INCLUDE 'EXP_KBD.ASZ'
|
||||||
|
|
||||||
;GLOBAL_RESET:
|
;GLOBAL_RESET:
|
||||||
@ -38,50 +39,58 @@ START:
|
|||||||
; PUSH HL
|
; PUSH HL
|
||||||
; DI
|
; DI
|
||||||
; RET
|
; RET
|
||||||
|
;***********************************************************************;
|
||||||
BLOCK #3FD0-$,255
|
BLOCK #3FD0-$,255
|
||||||
|
; PUSH AF
|
||||||
|
; LD A,D_ROM16OFF
|
||||||
|
; OUT (SYS_PORT_ON),A
|
||||||
|
; POP AF
|
||||||
|
; HD_CMD_XR_RET:
|
||||||
|
; RET
|
||||||
|
|
||||||
PUSH AF
|
;***********************************************************************;
|
||||||
LD A,D_ROM16OFF
|
BLOCK #3FD7-$,255
|
||||||
OUT (SYS_PORT_ON),A
|
|
||||||
POP AF
|
|
||||||
HD_CMD_XR_RET:
|
|
||||||
RET
|
|
||||||
|
|
||||||
HD_CMD_XR:
|
HD_CMD_XR:
|
||||||
JP HD_CMD
|
JP HD_CMD
|
||||||
|
|
||||||
;************************
|
;***********************************************************************;
|
||||||
|
;!FIXIT not used
|
||||||
BLOCK #3FE0-$,255
|
BLOCK #3FE0-$,255
|
||||||
SND_TEST_RET:
|
; SND_TEST_RET:
|
||||||
LD A,D_ROM16OFF
|
; LD A,D_ROM16OFF
|
||||||
OUT (SYS_PORT_OFF),A
|
; OUT (SYS_PORT_OFF),A
|
||||||
JP SND_TEST_RET
|
; JP SND_TEST_RET
|
||||||
|
|
||||||
;***************************
|
;***********************************************************************;
|
||||||
BLOCK #3FE8-$,255
|
BLOCK #3FE8-$,255
|
||||||
HD_EXP_RET:
|
HD_EXP_RET:
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD A,D_ROM16OFF
|
LD A,CNF_PORT.ZX_BIOS
|
||||||
OUT (SYS_PORT_ON),A
|
;!TEST
|
||||||
|
;OUT (SYS_PORT_ON),A
|
||||||
|
OUT (CNF_PORT),A
|
||||||
|
;
|
||||||
JP HD_EXP_EXE
|
JP HD_EXP_EXE
|
||||||
|
|
||||||
|
;***********************************************************************;
|
||||||
BLOCK #3FF0-$,255
|
BLOCK #3FF0-$,255
|
||||||
|
|
||||||
HD_DOS_RET:
|
HD_DOS_RET:
|
||||||
PUSH AF
|
PUSH AF
|
||||||
DI
|
DI
|
||||||
LD A,D_ROM16OFF
|
LD A,CNF_PORT.ZX_BIOS
|
||||||
OUT (SYS_PORT_OFF),A
|
OUT (SYS_PORT.OFF),A
|
||||||
JR HD_CMD_XR
|
JR HD_CMD_XR
|
||||||
|
|
||||||
|
;***********************************************************************;
|
||||||
|
BLOCK #3FF8-$,255
|
||||||
EXP_FNS_RET:
|
EXP_FNS_RET:
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD A,D_ROM16OFF
|
LD A,CNF_PORT.ZX_BIOS
|
||||||
OUT (SYS_PORT_OFF),A
|
OUT (SYS_PORT.OFF),A
|
||||||
JP HD_CMD_XR_RET
|
//JP HD_CMD_XR_RET
|
||||||
|
RET
|
||||||
|
|
||||||
;******************************************
|
;***********************************************************************;
|
||||||
BLOCK #4000-$,255
|
BLOCK #4000-$,255
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
|
|||||||
@ -1,203 +0,0 @@
|
|||||||
; ZX Spectrum char codes
|
|
||||||
; By Marcos Cruz (programandala.net)
|
|
||||||
|
|
||||||
; ---------------------------------------------------------------------
|
|
||||||
; Characters (new format)
|
|
||||||
ZX_Char:
|
|
||||||
; Not used equ 0x00
|
|
||||||
; Not used equ 0x01
|
|
||||||
; Not used equ 0x02
|
|
||||||
; Not used equ 0x03
|
|
||||||
; Not used equ 0x04
|
|
||||||
; Not used equ 0x05
|
|
||||||
.caps equ 0x06 ; toggle caps lock
|
|
||||||
.print_comma equ 0x06 ; (when printed)
|
|
||||||
.edit equ 0x07 ; edit
|
|
||||||
.esc equ 0x07 ; escape
|
|
||||||
.cursor_left equ 0x08
|
|
||||||
.backspace equ 0x08
|
|
||||||
.right equ 0x09 ; cursor right
|
|
||||||
.cursor_down equ 0x0A
|
|
||||||
.cursor_up equ 0x0B
|
|
||||||
.delete_left equ 0x0C ; delete (backspace)
|
|
||||||
.form_feed equ 0x0C ; used for printing
|
|
||||||
.carriage_return equ 0x0D ; enter key
|
|
||||||
.extended_mode equ 0x0E ;
|
|
||||||
.number equ 0x0E ;
|
|
||||||
.graphics equ 0x0F ; toggle graphics mode
|
|
||||||
.ink equ 0x10
|
|
||||||
.paper equ 0x11
|
|
||||||
.flash equ 0x12
|
|
||||||
.bright equ 0x13
|
|
||||||
.inverse equ 0x14
|
|
||||||
.over equ 0x15
|
|
||||||
.at equ 0x16
|
|
||||||
.tab equ 0x17 ; tab (screen only)
|
|
||||||
; Not used equ 0x18
|
|
||||||
; Not used equ 0x19
|
|
||||||
; Not used equ 0x1A
|
|
||||||
; Not used equ 0x1B
|
|
||||||
; Not used equ 0x1C
|
|
||||||
; Not used equ 0x1D
|
|
||||||
; Not used equ 0x1E
|
|
||||||
; Not used equ 0x1F
|
|
||||||
.space equ 0x20
|
|
||||||
|
|
||||||
; Standart symbols
|
|
||||||
; #21 ! #22 " #23 # #24 $ #25 % #26 & #27 , #28 (
|
|
||||||
; #29 ) #2A * #2B + #2C , #2D - #2F . #2F / #30 0
|
|
||||||
; #31 1 #32 2 #33 3 #34 4 #35 5 #36 6 #37 7 #38 8
|
|
||||||
; #39 9 #3A : #3B ; #3C < #3D = #3E > #3F ? #40 @
|
|
||||||
; #41 A #42 B #43 C #44 D #45 E #46 F #47 G #48 H
|
|
||||||
; #49 I #4A J #4B K #4C L #4D M #4E N #4F O #50 P
|
|
||||||
; #51 Q #52 R #53 S #54 T #55 U #56 V #57 W #58 X
|
|
||||||
; #59 Y #5A Z #5B [ #5C / #5D ] #5E ^ #5F _ #60 ?
|
|
||||||
; #61 a #62 b #63 c #64 d #65 e #66 f #67 g #68 h
|
|
||||||
; #69 i #6A j #6B k #6C l #6D m #6E n #6F o #70 p
|
|
||||||
; #71 q #72 r #73 s #74 t #75 u #76 v #77 w #78 x
|
|
||||||
; #79 y #7A z #7B { #7C | #7D } #7E ~
|
|
||||||
.copyright equ 0x7F ; copyright sign
|
|
||||||
|
|
||||||
; ---------------------------------------------------------------------
|
|
||||||
; User Defined Graphics
|
|
||||||
; 0 1 2 3 4 5 6 7
|
|
||||||
;| | | #| |# | |# #| | | | #| |# | |# #|
|
|
||||||
;| | | | | | | | | #| | #| | #| | #|
|
|
||||||
; 8 9 A B C D E F
|
|
||||||
;| | | #| |# | |# #| | | | #| |# | |# #|
|
|
||||||
;|# | |# | |# | |# | |# #| |# #| |# #| |# #|
|
|
||||||
ZX_UDG:
|
|
||||||
.block_0 equ 0x80
|
|
||||||
.block_1 equ 0x81
|
|
||||||
.block_2 equ 0x82
|
|
||||||
.block_3 equ 0x83
|
|
||||||
.block_4 equ 0x84
|
|
||||||
.block_5 equ 0x85
|
|
||||||
.block_6 equ 0x86
|
|
||||||
.block_7 equ 0x87
|
|
||||||
.block_8 equ 0x88
|
|
||||||
.block_9 equ 0x89
|
|
||||||
.block_A equ 0x8A
|
|
||||||
.block_B equ 0x8B
|
|
||||||
.block_C equ 0x8C
|
|
||||||
.block_D equ 0x8D
|
|
||||||
.block_E equ 0x8E
|
|
||||||
.block_F equ 0x8F
|
|
||||||
.a equ 0x90
|
|
||||||
.b equ 0x91
|
|
||||||
.c equ 0x92
|
|
||||||
.d equ 0x93
|
|
||||||
.e equ 0x94
|
|
||||||
.f equ 0x95
|
|
||||||
.g equ 0x96
|
|
||||||
.h equ 0x97
|
|
||||||
.i equ 0x98
|
|
||||||
.j equ 0x99
|
|
||||||
.k equ 0x9A
|
|
||||||
.l equ 0x9B
|
|
||||||
.m equ 0x9C
|
|
||||||
.n equ 0x9D
|
|
||||||
.o equ 0x9E
|
|
||||||
.p equ 0x9F
|
|
||||||
.q equ 0xA0
|
|
||||||
.r equ 0xA1
|
|
||||||
.s equ 0xA2
|
|
||||||
.t equ 0xA3 ; token SPECTRUM in 128 basic
|
|
||||||
.u equ 0xA4 ; token PLAY in 128 basic
|
|
||||||
; ---------------------------------------------------------------------
|
|
||||||
; Tokens
|
|
||||||
ZX_Token
|
|
||||||
.spectrum equ 0xA3 ; UDG T in 48 basic
|
|
||||||
.play equ 0xA4 ; UDG U in 48 basic
|
|
||||||
.rnd equ 0xA5
|
|
||||||
.inkey_dollar equ 0xA6
|
|
||||||
.pi equ 0xA7
|
|
||||||
.fn equ 0xA8
|
|
||||||
.point equ 0xA9
|
|
||||||
.screen_dollar equ 0xAA
|
|
||||||
.attr equ 0xAB
|
|
||||||
.at equ 0xAC
|
|
||||||
.tab equ 0xAD
|
|
||||||
.val_dollar equ 0xAE
|
|
||||||
.code equ 0xAF
|
|
||||||
.val equ 0xB0
|
|
||||||
.len equ 0xB1
|
|
||||||
.sin equ 0xB2
|
|
||||||
.cos equ 0xB3
|
|
||||||
.tan equ 0xB4
|
|
||||||
.asn equ 0xB5
|
|
||||||
.acs equ 0xB6
|
|
||||||
.atn equ 0xB7
|
|
||||||
.ln equ 0xB8
|
|
||||||
.exp equ 0xB9
|
|
||||||
.int equ 0xBA
|
|
||||||
.sqr equ 0xBB
|
|
||||||
.sgn equ 0xBC
|
|
||||||
.abs equ 0xBD
|
|
||||||
.peek equ 0xBE
|
|
||||||
.in equ 0xBF
|
|
||||||
.usr equ 0xC0
|
|
||||||
.str_dollar equ 0xC1
|
|
||||||
.chr_dollar equ 0xC2
|
|
||||||
.not equ 0xC3
|
|
||||||
.bin equ 0xC4
|
|
||||||
.or equ 0xC5
|
|
||||||
.and equ 0xC6
|
|
||||||
.less_or_equal equ 0xC7
|
|
||||||
.greater_or_equal equ 0xC8
|
|
||||||
.not_equal equ 0xC9
|
|
||||||
.line equ 0xCA
|
|
||||||
.then equ 0xCB
|
|
||||||
.to equ 0xCC
|
|
||||||
.step equ 0xCD
|
|
||||||
.def_fn equ 0xCE
|
|
||||||
.cat equ 0xCF
|
|
||||||
.format equ 0xD0
|
|
||||||
.move equ 0xD1
|
|
||||||
.erase equ 0xD2
|
|
||||||
.open_channel equ 0xD3
|
|
||||||
.close_channel equ 0xD4
|
|
||||||
.merge equ 0xD5
|
|
||||||
.verify equ 0xD6
|
|
||||||
.beep equ 0xD7
|
|
||||||
.circle equ 0xD8
|
|
||||||
.ink equ 0xD9
|
|
||||||
.paper equ 0xDA
|
|
||||||
.flash equ 0xDB
|
|
||||||
.bright equ 0xDC
|
|
||||||
.inverse equ 0xDD
|
|
||||||
.over equ 0xDE
|
|
||||||
.out equ 0xDF
|
|
||||||
.lprint equ 0xE0
|
|
||||||
.llist equ 0xE1
|
|
||||||
.stop equ 0xE2
|
|
||||||
.read equ 0xE3
|
|
||||||
.data equ 0xE4
|
|
||||||
.restore equ 0xE5
|
|
||||||
.new equ 0xE6
|
|
||||||
.border equ 0xE7
|
|
||||||
.continue equ 0xE8
|
|
||||||
.dim equ 0xE9
|
|
||||||
.rem equ 0xEA
|
|
||||||
.for equ 0xEB
|
|
||||||
.go_to equ 0xEC
|
|
||||||
.go_sub equ 0xED
|
|
||||||
.input equ 0xEE
|
|
||||||
.load equ 0xEF
|
|
||||||
.list equ 0xF0
|
|
||||||
.let equ 0xF1
|
|
||||||
.pause equ 0xF2
|
|
||||||
.next equ 0xF3
|
|
||||||
.poke equ 0xF4
|
|
||||||
.print equ 0xF5
|
|
||||||
.plot equ 0xF6
|
|
||||||
.run equ 0xF7
|
|
||||||
.save equ 0xF8
|
|
||||||
.randomize equ 0xF9
|
|
||||||
.if equ 0xFA
|
|
||||||
.cls equ 0xFB
|
|
||||||
.draw equ 0xFC
|
|
||||||
.clear equ 0xFD
|
|
||||||
.return equ 0xFE
|
|
||||||
.copy equ 0xFF
|
|
||||||
; ---------------------------------------------------------------------
|
|
||||||
2265
inc/rom_routines.inc
2265
inc/rom_routines.inc
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user