in progress: current dir for TR-DOS HDD

This commit is contained in:
Tolik 2024-07-18 05:36:06 +10:00 committed by Anatoliy Belyanskiy
parent 03cdbeca7d
commit 685e382582
9 changed files with 1021 additions and 298 deletions

View File

@ -49,24 +49,16 @@ AUTO_411E EQU #411E
AUTO_4130 EQU #4130 AUTO_4130 EQU #4130
AUTO_4140 EQU #4140 AUTO_4140 EQU #4140
AUTO_41FF EQU #41FF AUTO_41FF EQU #41FF
AUTO_5220 EQU #5220
AUTO_58E8 EQU #58E8
AUTO_5E34 EQU #5E34 AUTO_5E34 EQU #5E34
AUTO_5F00 EQU #5F00 AUTO_5F00 EQU #5F00
AUTO_5F10 EQU #5F10 AUTO_5F10 EQU #5F10
AUTO_5F12 EQU #5F12 AUTO_5F12 EQU #5F12
AUTO_6000 EQU #6000
PORT_128 EQU #7FFD PORT_128 EQU #7FFD
AUTO_A1DB EQU #A1DB AUTO_A1DB EQU #A1DB
AUTO_B0ED EQU #B0ED AUTO_B0ED EQU #B0ED
AUTO_B8ED EQU #B8ED
AUTO_C000 EQU #C000 AUTO_C000 EQU #C000
AUTO_C130 EQU #C130 AUTO_C130 EQU #C130
AUTO_C308 EQU #C308
AUTO_C916 EQU #C916
AUTO_FE15 EQU #FE15
AUTO_FF00 EQU #FF00
;**************************************** ;****************************************
START: DI START: DI
@ -526,7 +518,7 @@ AUTO_031A:
AUTO_0320: AUTO_0320:
INC C INC C
LD D,A LD D,A
LD A,22 ; 21 !!! Add new comand !! LD A,TRDOS_CMD.LIST.Size
CP C CP C
JP C,AUTO_01D3 ; …‘‹ˆ <20><20>€‰„…<E2809E>Ž-‚›‰’ˆ JP C,AUTO_01D3 ; …‘‹ˆ <20><20>€‰„…<E2809E>Ž-‚›‰’ˆ
LD A,D LD A,D
@ -561,10 +553,15 @@ AUTO_0359:
SET 7,(HL) SET 7,(HL)
POP HL POP HL
JP (HL) JP (HL)
NAME_TRD:
DB 127," 1986 Technology Research. " ;-----------------------------------------------------------------------
DB "version 5.05 by Makarchenco Ivan. " _mInfoBLOCK #03AC-$,#FF
DB " <PeterS>",0,0 ; NAME_TRD:
; DB 127," 1986 Technology Research. "
; DB "version 5.05 by Makarchenco Ivan. "
; DB " <PeterS>",0,0
;-----------------------------------------------------------------------
AUTO_03AC: AUTO_03AC:
CALL AUTO_03FD CALL AUTO_03FD
CALL PRINT_CR CALL PRINT_CR
@ -1153,9 +1150,9 @@ WG93_EXE_:
INCLUDE 'trdos/tr_msd_3.asz' INCLUDE 'trdos/tr_msd_3.asz'
_mInfoBLOCK #0B00-$,255 ; _mInfoBLOCK #0B00-$,255
;!TODO russian charset ;!TODO russian charset
ZG_RUS: DB 3 ; ¨¤¥­â¨ä¨ª â®à ¢¥àᨨ TR-DOS ??? ;ZG_RUS: DB 3 ; ¨¤¥­â¨ä¨ª â®à ¢¥àᨨ TR-DOS ???
;************************************** ;**************************************
INCLUDE 'trdos/tr_msd_2.asz' INCLUDE 'trdos/tr_msd_2.asz'
@ -1265,11 +1262,11 @@ AUTO_1059:
POP DE POP DE
POP BC POP BC
POP HL POP HL
AND 223 AND %1101'1111
EI EI
RET RET
AUTO_106E: AUTO_106E:
LD HL,AUTO_58E8 LD HL,#58E8 ; ¤à¥á «¨­¨¨  âਡã⮢
LD B,10 LD B,10
AUTO_1073: AUTO_1073:
LD (HL),7 LD (HL),7
@ -1277,15 +1274,13 @@ AUTO_1073:
DJNZ AUTO_1073 DJNZ AUTO_1073
LD (HL),2 LD (HL),2
INC HL INC HL
LD (HL),22 LD (HL),#16
INC HL INC HL
DB 54 LD (HL),#34
AUTO_107F:
INC (HL)
INC HL INC HL
LD (HL),'%' LD (HL),#25
INC HL INC HL
LD (HL),'(' LD (HL),#28
INC HL INC HL
LD (HL),7 LD (HL),7
LD HL,AUTO_40F1 LD HL,AUTO_40F1
@ -1448,12 +1443,12 @@ AUTO_1205:
PUSH AF PUSH AF
CALL Z,AUTO_1D97 CALL Z,AUTO_1D97
POP AF POP AF
CP 17 CP 16 + 1
JP NC,CMD_ERROR JP NC,CMD_ERROR
CALL AUTO_1D84 CALL AUTO_1D84
LD A,255 LD A,#FF
LD (ZX_VARS.DISK_1_FLG),A LD (ZX_VARS.DISK_1_FLG),A
CALL AUTO_1151 CALL AUTO_1151 ; !FIXIT ¢ë¤¥«ï¥â ¯ ¬ïâì, ­® ­¥ ®á¢®¡®¦¤ ¥â
LD HL,ZX_VARS.CLEAR_SEC LD HL,ZX_VARS.CLEAR_SEC
LD DE,(ZX_VARS.VAR_1) LD DE,(ZX_VARS.VAR_1)
LD BC,RST20 LD BC,RST20
@ -4276,7 +4271,7 @@ AUTO_25EF:
INC HL INC HL
LD D,(HL) LD D,(HL)
OR A OR A
LD HL,AUTO_107F LD HL,ROUTINE.ed_error ;48 basic routine
SBC HL,DE SBC HL,DE
JR NZ,AUTO_2626 JR NZ,AUTO_2626
LD SP,(ZX_VARS.ERR_SP) LD SP,(ZX_VARS.ERR_SP)
@ -5588,66 +5583,64 @@ AUTO_2FDE:
RET RET
//////////////////////////////////////////// ////////////////////////////////////////////
TRDOS_CMD: TRDOS_CMD: ; ’ ¡«¨æ  ª®¬ ­¤ TR-DOS.
; ’ ¡«¨æ  ª®¬ ­¤ TR-DOS. .LIST: DB ZX_Token.cat
.LIST: DB ZX_Token.cat DB '*'
DB '*' DB ZX_Token.format
DB ZX_Token.format DB ZX_Token.move
DB ZX_Token.move ;
; DB ZX_Token.new
DB ZX_Token.new DB ZX_Token.erase
DB ZX_Token.erase DB ZX_Token.load
DB ZX_Token.load DB ZX_Token.save
DB ZX_Token.save ;
; DB ZX_Token.return
DB ZX_Token.return DB ZX_Token.peek
DB ZX_Token.peek DB ZX_Token.poke
DB ZX_Token.poke DB ZX_Token.merge
DB ZX_Token.merge ;
; DB ZX_Token.run
DB ZX_Token.run DB ZX_Token.open_channel
DB ZX_Token.open_channel DB ZX_Token.close_channel
DB ZX_Token.close_channel DB ZX_Token.copy
DB ZX_Token.copy ;
; DB '4'
DB '4' DB ZX_Token.go_to
DB ZX_Token.go_to DB '8'
DB '8' DB ZX_Token.list
DB ZX_Token.list ;
; DB ZX_Token.verify
DB ZX_Token.verify DB '/'
DB '/' ;
;; .LIST.Size EQU $ - TRDOS_CMD.LIST
;; ; ’ ¡«¨æ   ¤à¥á®¢ ¯®¤¯à®£à ¬¬, ¢ë¯®«­ïîé¨å ª®¬ ­¤ë TR-DOS.
.Size EQU $ - TRDOS_CMD.LIST .TABLE: DW CMD_CAT
; ’ ¡«¨æ   ¤à¥á®¢ ¯®¤¯à®£à ¬¬, ¢ë¯®«­ïîé¨å ª®¬ ­¤ë TR-DOS. DW CMD_STAR
.TABLE: DW CMD_CAT DW CMD_FORMAT
DW CMD_STAR DW CMD_MOVE
DW CMD_FORMAT ;
DW CMD_MOVE DW CMD_NEW
; DW CMD_ERASE
DW CMD_NEW DW CMD_LOAD
DW CMD_ERASE DW CMD_SAVE
DW CMD_LOAD ;
DW CMD_SAVE DW CMD_RETURN
; DW CMD_PEEK
DW CMD_RETURN DW CMD_POKE
DW CMD_PEEK DW CMD_MERGE
DW CMD_POKE ;
DW CMD_MERGE DW CMD_RUN
; DW CMD_OPEN
DW CMD_RUN DW CMD_CLOSE
DW CMD_OPEN DW CMD_COPY
DW CMD_CLOSE ;
DW CMD_COPY DW CMD_40
; DW CMD_GOTO
DW CMD_40 DW CMD_80
DW CMD_GOTO DW CMD_LIST
DW CMD_80 ;
DW CMD_LIST DW CMD_VERIFY
; DW CMD_MSDOS
DW CMD_VERIFY
DW CMD_MSDOS
//////////////////////////////////////////// ////////////////////////////////////////////
; ;
; ;
@ -6434,8 +6427,8 @@ READR_X:
;***************************** ;*****************************
NEW_NAME: NEW_NAME:
DB 22,1,3, "* Sprinter TR-DOS v.7.02 *" DB 22,1,3, "* Sprinter TR-DOS v.7.03 *"
DB 22,3,6, "(c) 2023 Sprinter Team" DB 22,3,6, "(c) 2024 Sprinter Team"
DB 22,5,14, "*R.F.*" DB 22,5,14, "*R.F.*"
DB 22,7,9, "BETA 4Mb",0 DB 22,7,9, "BETA 4Mb",0

View File

@ -20358,6 +20358,4 @@ L3D00: DEFB %00000000
DEFB %01000010 DEFB %01000010
DEFB %00111100 DEFB %00111100
END ; END

@ -1 +1 @@
Subproject commit 4f546cb1d2cd8eeb1aec0de2c3e9902d1bb52fee Subproject commit 77a51684d4d63ad2fdccf416793951df00276b17

View File

@ -1,16 +1,110 @@
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:;!TEST
.loop: LD A,(DE)
INC DE
CP " "
JR Z,.loop
CP "\r"
JR Z,.init
;
DEC DE
DEC DE
JP CHOOSE_HDD
;CALL CHOOSE_HDD
;CALL READ_BPB
;RET
;
; [x] new tr-hdd
.init: ;CALL CORRECT_CUR_DIR
DI
IN A,(SLOT3)
LD C,A
LD A,SYS_PAGE
OUT (SLOT3),A
;
LD A,(SYS_PAGE.CURRENT_DIR_HDD)
CP #FF
JR Z,.skip
LD (SYS_PAGE.CURRENT_HDD),A
;
.skip: ;LD A,(SYS_PAGE.CURRENT_HDD)
OR #40
PUSH AF
LD A,C
OUT (SLOT3),A
;
LD C,BIOS.HDD_INIT
CALL EXP_FNS
POP AF
JP C,HDD_PROG_E
;
; LD BC,(ZX_VARS.OPER_DISK - 1)
; LD A,(ZX_VARS.OPER_DISK)
; LD B,A
; XOR A
LD E,A
LD C,BIOS.SET_DISK_REDIR
JP EXP_FNS
;[x] 29/01/2024 ;[x] 29/01/2024
;¢ë室: A: bit1 - Primary/Secondary, bit0 - master/slave, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR ;¢ë室: A: bit1 - Primary/Secondary, bit0 - master/slave, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR
CHOOSE_HDD: CHOOSE_HDD:
PUSH DE
LD A,(ZX_VARS.OPER_DISK)
LD C,BIOS.GET_DRV_ST
CALL EXP_FNS
POP DE
JR C,.error
AND #40 ;!HARDCODE HDD
CALL Z,.setUp_HDD
;
.loop: LD A,(DE) .loop: LD A,(DE)
INC DE INC DE
CP " " CP " "
@ -18,8 +112,7 @@ CHOOSE_HDD:
LD A,(DE) LD A,(DE)
CP "\r" CP "\r"
JR Z,.error JR Z,.error
.cont: ; ­®¬¥à à §¤¥«  ; ­®¬¥à à §¤¥« 
;INC DE
LD A,(DE) LD A,(DE)
CP "4" CP "4"
JR NC,.error JR NC,.error
@ -29,17 +122,6 @@ CHOOSE_HDD:
RLA RLA
RLA RLA
LD C,A LD C,A
; ; master/slave
; DEC DE
; LD A,(DE)
; CP "2"
; JR NC,.error
; CP "0"
; JR C,.error
; SUB "0"
; RLA
; OR C
; LD C,A
; Primary/Secondary, master/slave ; Primary/Secondary, master/slave
DEC DE DEC DE
LD A,(DE) LD A,(DE)
@ -50,20 +132,129 @@ CHOOSE_HDD:
SUB "0" SUB "0"
OR C OR C
; ;
PUSH AF
LD C,BIOS.HDD_PART LD C,BIOS.HDD_PART
CALL EXP_FNS CALL EXP_FNS
RET NC POP BC
JR C,.error
; ;
.error: LD HL,MSG_3 SCF
;CALL CORRECT_CUR_DIR
CALL RESTORE_CURRENT_DIR
;
XOR A
LD C,A ; ®¡­ã«¨âì 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 JP ERR_EXIT
; ;
.setUp_HDD: ; .setUp_HDD:
LD A,(ZX_VARS.OPER_DISK) ; PUSH BC
LD B,A ; LD A,(ZX_VARS.OPER_DISK)
XOR A ; LD B,A
LD C,BIOS.HDD_TO_DRV ; XOR A
PUSH DE ; LD C,BIOS.HDD_TO_DRV
; CALL EXP_FNS
; POP BC
; RET
;
;.set_from_sys_page:
; !!!
; CF=1: skip resest CURRENT_HDD
; CF=0: resest CURRENT_HDD
; [x] new tr-hdd
RESTORE_CURRENT_DIR:
PUSH AF
;
LD C,BIOS.GET_DISK_REDIR
CALL EXP_FNS CALL EXP_FNS
POP DE 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_HDD)
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 RET
; ;
; [x] new tr-hdd
; TO INIT by SPECTRUM.EXE:
; .CURRENT_DIR_SEC_L EQU #C196 ; word
; .CURRENT_DIR_SEC_H EQU #C198 ; word
; .CURRENT_DIR_HDD EQU #C19A
; .CURRENT_HDD EQU #C12D
; CORRECT_CUR_DIR:
; DI
; IN A,(SLOT3)
; LD C,A
; LD A,SYS_PAGE
; OUT (SLOT3),A
; LD A,#FF
; JR C,.skip
; LD (SYS_PAGE.CURRENT_HDD),A
; .skip: INC A
; LD H,A
; LD L,A
; LD (SYS_PAGE.CURRENT_DIR_SEC_L),HL
; LD (SYS_PAGE.CURRENT_DIR_SEC_H),HL
; LD A,C
; OUT (SLOT3),A
; RET
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
DISPLAY "TR_HDD_4.ASZ size: ",/A,$-File_Start
DISPLAY "===================================================="

View File

@ -1,7 +1,9 @@
; File_Start DEFL $
; for INCLUDE DISPLAY "===================================================="
;詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗<E8A997>
;**********************************
; MS-DOS system ; MS-DOS system
;
;********************************** ;**********************************
MSDOS_FIND_FILE: MSDOS_FIND_FILE:
@ -19,10 +21,28 @@ MSDOS_FIND_NEXT:
;*********************************************** ;***********************************************
; ;
; CHECK_BPB:
; IN A,(SLOT3)
; LD E,A
; LD A,SYS_PAGE
; DI
; OUT (SLOT3),A
; ;
; LD A,(SYS_PAGE.BPB_PARSED)
; ADD A,1
; ;
; LD A,E
; OUT (SLOT3),A
; EI
; RET
;*********************************************** ;***********************************************
MSDOS_1ST_FL: MSDOS_1ST_FL:
PUSH DE PUSH DE
CALL READ_BPB ; 15/07/2024
;CALL CHECK_BPB
CALL READ_BPB
;CALL C,READ_BPB
;
CALL READ_1ST_DIR CALL READ_1ST_DIR
POP DE POP DE
MSDOS_TEST_FL: MSDOS_TEST_FL:
@ -341,7 +361,7 @@ LOAD_RMD_XX:
POP AF POP AF
CALL GET_RMD_A ; ãáâ ­®¢¨âì RAM-Disk A à §¬¥à®¬ B CALL GET_RMD_A ; ãáâ ­®¢¨âì RAM-Disk A à §¬¥à®¬ B
LD HL,0C000H LD HL,#C000
CALL MSDOS_READ_FILE CALL MSDOS_READ_FILE
JP AUTO_03E1 JP AUTO_03E1
@ -570,7 +590,7 @@ WORDS: DB 5,'CLEAR' ;
DW TB_ONOFF DW TB_ONOFF
DB 5,'TBOFF' ; ¢ëª«îç¨âì âãà¡® DB 5,'TBOFF' ; ¢ëª«îç¨âì âãà¡®
DW TB_ONOFF DW TB_ONOFF
DB 4,'INIT' ; ¨­¨§¨ «¨§ æ¨ï DB 4,'INIT' ; 鄍身豆<EFBFBD><EFBFBD><EFBFBD>
DW INIT_RMD DW INIT_RMD
DB 8,"SPRINTER" DB 8,"SPRINTER"
DW SPR_1 DW SPR_1
@ -625,3 +645,6 @@ SP_1: LD A,(DE)
; 1 - <20><E2809A><E280A6>‰ ”Ž<E2809D>Œ€ ˆŒ…<C592>ˆ ; 1 - <20><E2809A><E280A6>‰ ”Ž<E2809D>Œ€ ˆŒ…<C592>ˆ
; 2 - ŠŽ<C5A0> Š€’€‹Žƒ€ ; 2 - ŠŽ<C5A0> Š€’€‹Žƒ€
; ;
;詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗<E8A997>
DISPLAY "TR_MSD_2.ASZ size: ",/A,$-File_Start
DISPLAY "===================================================="

View File

@ -1,4 +1,6 @@
File_Start DEFL $
DISPLAY "===================================================="
;ŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰ
INIT_RMD: INIT_RMD:
LD C,BIOS.FullInit LD C,BIOS.FullInit
;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â® ;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â®
@ -559,90 +561,7 @@ GET_FL_L2:
RET Z RET Z
INC BC INC BC
RET RET
;*************************************************************************** ;***********************************************************************
;ŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰ
HDD_PROG: DISPLAY "TR_MSD_3.ASZ size: ",/A,$-File_Start
;!TEST 06/01/2024 㡨ࠥ¬ «¨è­¨¥ ⥫®¤¢¨¦¥­¨ï DISPLAY "===================================================="
;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+54
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 10H
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:;!TEST
.loop: LD A,(DE)
INC DE
CP ' '
JR Z,.loop
CP "\r"
JR Z,.init
;
DEC DE
DEC DE
JP CHOOSE_HDD
;
.init: ;!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 A,(ZX_VARS.OPER_DISK)
LD B,A
XOR A
LD C,BIOS.HDD_TO_DRV
;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â®
JP EXP_FNS
;CALL EXP_FNS
;EI
;RET
;
;***************************************************************************

View File

@ -1,7 +1,9 @@
; File_Start DEFL $
; for INCLUDE DISPLAY "===================================================="
;ŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰ
;********************************************
; MS-DOS system ; MS-DOS system
;
;******************************************** ;********************************************
; MS-DOS utilites ; MS-DOS utilites
;******************************************** ;********************************************
@ -427,20 +429,23 @@ SET_1440:
READ_BPB: READ_BPB:
CALL DISK_REDIR CALL DISK_REDIR
; LD C,BIOS.GET_DISK_REDIR
; CALL EXP_FNS
CP #40 CP #40
JR NC,.HDD_REDIR2 JR NC,.HDD
CP 4 CP 4
JP NC,.ERROR_MSDOS JP NC,.ERROR_MSDOS
;
CALL SET_DISK CALL SET_DISK
;
CALL .MAIN CALL .MAIN
RET NC RET NC
JP .ERROR_MSDOS JP .ERROR_MSDOS
.HDD_REDIR2: ;
CALL .MAIN .HDD: CALL .MAIN
CALL NC,RESTORE_CURRENT_DIR ; [x] new tr-hdd
RET NC RET NC
.SPACIAL: ; old hdd
LD IX,0 LD IX,0
LD DE,63 ;!HARDCODE LD DE,63 ;!HARDCODE
LD A,SYS_PAGE LD A,SYS_PAGE
@ -450,17 +455,18 @@ READ_BPB:
CALL MSD_R_W_UT CALL MSD_R_W_UT
; ;
CALL .PARAMS CALL .PARAMS
CALL NC,RESTORE_CURRENT_DIR ; [x] new tr-hdd
RET NC RET NC
JP .ERROR_MSDOS JP .ERROR_MSDOS
;
.MAIN: LD A,SYS_PAGE .MAIN: LD A,SYS_PAGE
LD HL,SYS_PAGE.MS_BPB LD HL,SYS_PAGE.MS_BPB
LD C,TRDOS_ROM_CMD.READ_BPB LD C,TRDOS_ROM_CMD.READ_BPB
CALL MSD_R_W_UT CALL MSD_R_W_UT
;CALL BPB_PARAMS ;CALL BPB_PARAMS
;RET ;RET
;
; LD C,18H ; LD C,18H
; LD A,(ZX_VARS.OPER_DISK) ; LD A,(ZX_VARS.OPER_DISK)
; CALL HD_CMD ; CALL HD_CMD
@ -493,8 +499,8 @@ READ_BPB:
CP #F0 CP #F0
JP C,.ERROR_BPB JP C,.ERROR_BPB
LD HL,SYS_PAGE.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
.L1: LD A,(DE) .L1: LD A,(DE)
CP ' ' CP ' '
@ -507,7 +513,7 @@ READ_BPB:
INC HL INC HL
INC DE INC DE
DJNZ .L1 DJNZ .L1
LD A,(HL) LD A,(DE)
CP '6' CP '6'
LD HL,#81FF ; FAT16 ä« £ LD HL,#81FF ; FAT16 ä« £
JR Z,.FAT JR Z,.FAT
@ -521,15 +527,16 @@ READ_BPB:
LD A,(SYS_PAGE.MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४ LD A,(SYS_PAGE.MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४
LD (SYS_PAGE.MSD_SECS),A LD (SYS_PAGE.MSD_SECS),A
BIT 7,H ; BIT 7,H
LD IX,0 ; LD IX,0
LD HL,0 ; ¢ëç¨á«¨âì ­ ç «ì­ë© ᥪâ®à FAT ; LD HL,0 ; ˘ëç¨áŤ¨âě ­ ç Ťě­ëŠ áĽŞâŽŕ FAT
; JR Z,.NO_LD_SPECIAL
JR Z,.NO_LD_SPECIAL
LD IX,(SYS_PAGE.MS_BPB+SPECIAL_SECS) LD IX,(SYS_PAGE.MS_BPB+SPECIAL_SECS)
LD HL,(SYS_PAGE.MS_BPB+SPECIAL_SECS+2) LD HL,(SYS_PAGE.MS_BPB+SPECIAL_SECS+2)
.NO_LD_SPECIAL:
;.NO_LD_SPECIAL:
LD BC,0 LD BC,0
LD DE,(SYS_PAGE.MS_BPB+RESERV_SECS) LD DE,(SYS_PAGE.MS_BPB+RESERV_SECS)
@ -539,10 +546,10 @@ READ_BPB:
LD (SYS_PAGE.MSD_FAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à FAT LD (SYS_PAGE.MSD_FAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à FAT
LD (SYS_PAGE.MSD_FAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à FAT LD (SYS_PAGE.MSD_FAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à FAT
LD DE,(SYS_PAGE.MS_BPB+S_P_F) ; ç¨á«® ᥪâ®à®¢ ¢ FAT LD DE,(SYS_PAGE.MS_BPB+S_P_F) ; ç¨áŤŽ ἪâŽŕŽ˘ ˘ FAT
LD BC,0 ;LD BC,0
LD A,(SYS_PAGE.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
@ -552,16 +559,18 @@ READ_BPB:
LD (SYS_PAGE.MSD_CAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à DIR LD (SYS_PAGE.MSD_CAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à DIR
LD (SYS_PAGE.MSD_CAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à DIR LD (SYS_PAGE.MSD_CAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à DIR
; A=0
LD BC,(SYS_PAGE.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 (SYS_PAGE.FilesPerSector),A
LD DE,(SYS_PAGE.MS_BPB+FLS_NUM) ; —¨á«® ä ©«®¢ëå § ¯¨á¥© LD DE,(SYS_PAGE.MS_BPB+FLS_NUM) ; —¨á«® ä ©«®¢ëå § ¯¨á¥©
@ -577,8 +586,8 @@ READ_BPB:
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 D,B
LD (SYS_PAGE.SectorsPerCluster),A LD (SYS_PAGE.SectorsPerCluster),A
ADD IX,DE ; <20> ç «® DATA area ADD IX,DE ; <20> ç «® DATA area
@ -588,10 +597,12 @@ READ_BPB:
LD (SYS_PAGE.MSD_DAT_SEC2),HL LD (SYS_PAGE.MSD_DAT_SEC2),HL
LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à  LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à 
LD HL,0 ; D = 0
LD H,D
LD L,D
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE) LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
LD D,A LD D,A
LD A,L XOR A
.NEXT_ADD3: .NEXT_ADD3:
ADD HL,BC ; ‚ëç¨á«¥­¨¥ ¤«¨­ë ª« áâ¥à  ADD HL,BC ; ‚ëç¨á«¥­¨¥ ¤«¨­ë ª« áâ¥à 
ADC A,0 ADC A,0
@ -599,11 +610,14 @@ READ_BPB:
JR NZ,.NEXT_ADD3 JR NZ,.NEXT_ADD3
LD (SYS_PAGE.CLASTER_LEN),HL LD (SYS_PAGE.CLASTER_LEN),HL
LD B,0 ; D = 0
LD B,D
LD C,A LD C,A
LD (SYS_PAGE.CLASTER_LEN2),BC LD (SYS_PAGE.CLASTER_LEN2),BC
LD HL,0 ; D = 0
LD H,D
LD L,D
LD BC,(SYS_PAGE.MS_BPB+S_P_T) LD BC,(SYS_PAGE.MS_BPB+S_P_T)
LD A,(SYS_PAGE.MS_BPB+H_P_S) LD A,(SYS_PAGE.MS_BPB+H_P_S)
.BPB_L1:; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž …ŠŽ<E28099>Ž <20>ˆˆ<E280B9><EFBFBD> .BPB_L1:; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž …ŠŽ<E28099>Ž <20>ˆˆ<E280B9><EFBFBD>
@ -627,6 +641,7 @@ READ_BPB:
.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'
;******************************************** ;********************************************
@ -759,7 +774,8 @@ NO_ADD:
POP DE POP DE
POP HL POP HL
RET RET
;******************************************* ;*******************************************
;ŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰŰ
DISPLAY "TR_MSD_S.ASZ size: ",/A,$-File_Start
DISPLAY "===================================================="

View File

@ -1,19 +1,16 @@
; File_Start DEFL $
DISPLAY "===================================================="
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
DEFINE NEW_RAMDRV_READ 1 DEFINE NEW_RAMDRV_READ 1
DISK_REDIR: DISK_REDIR:
PUSH HL ;PUSH HL
PUSH BC PUSH BC
LD A,(ZX_VARS.OPER_DISK) LD C,BIOS.GET_DISK_REDIR
AND 3
LD C,BIOS.GET_DRV_ST
CALL EXP_FNS CALL EXP_FNS
;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â®
;EI
;
POP BC POP BC
POP HL ;POP HL
RET RET
R_W_REDIR: R_W_REDIR:
@ -550,41 +547,6 @@ READ_WRITE_RAMD:
; A = RAM Block ID ; A = RAM Block ID
EX AF,AF' EX AF,AF'
; ;
;POP DE
; POP BC
; PUSH BC
; ; !TEST ­ ªàã稢 ¥¬ áçñâ稪 r/w ᥪâ®à®¢
; LD HL,(ZX_VARS.CONT_SEC)
; LD D,H
; LD E,L
; ;!TODO ¯¥à¥¤¥« âì íâã â㯮áâì ­  ¬ â¥¬ â¨ªã
; LD A,16
; .loop: INC L
; CP L
; JR NZ,.skip
; INC H
; LD L,0
; .skip: DJNZ .loop
; ; á®å࠭塞 ­ ªàã祭­ë© áçñâ稪
; LD (ZX_VARS.CONT_SEC),HL
; ; ”ˆ‡ˆ—…‘Šˆ‰ …ŠŽ<E28099> -> ‹Žƒˆ—…‘Šˆ‰
; LD A,D
; RRCA
; RRCA
; RRCA
; RRCA
; LD D,A
; AND #F0
; OR E
; LD E,A
; LD A,D
; AND #0F
; LD D,A
; ;
; POP BC
; PUSH BC
POP HL POP HL
; Get command r/w ; Get command r/w
LD A,(ZX_VARS.RD_WR_COM) LD A,(ZX_VARS.RD_WR_COM)
@ -630,3 +592,6 @@ READ_WRITE_RAMD:
ENDIF ENDIF
;*********************************************************************** ;***********************************************************************
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
DISPLAY "TR_RMD_S.ASZ size: ",/A,$-File_Start
DISPLAY "===================================================="

618
TRDOS/boot_trd.asm Normal file
View File

@ -0,0 +1,618 @@
/*
BOOTER
;¢ë¯®«­ï«ª  ª®¬."8"
;¢¬¥áâ® #29AE
LD BC,#F4FF
RST #20
DW #1EAF ;CLEAR_RUN
;
LD A,1
RST #20
DW #229B ;border ¨ 23624
;
DI
LD HL,bootkus1 ;#E00
LD DE,#F500
LD BC,bootln1 ;#1F5
PUSH DE
LDIR
LD HL,bootkus2 ;#344D
LD BC,bootln2+1 ;#334
LDIR
SET 3,(IY+#01)
RET
*/
org 0
INCLUDE 'Shared_Includes/constants/ZX_VARS.inc'
INCLUDE 'Shared_Includes/constants/sp2000.inc'
INCLUDE 'inc/rom_routines.inc'
bootkus1: DISP #F500
DI ;¥£® ¨ #344D ª®¯¨àã¥â #3AE7
PUSH AF
PUSH HL
PUSH DE
PUSH BC
EXX
PUSH HL
LD HL,(ZX_VARS.ERR_SP)
LD (.ERR_SP),HL
LD A,(ZX_VARS.CONT_DISK)
LD (ZX_VARS.OPER_DISK),A
ADD A,#3C
LD (ZX_VARS.PDOS_COPY),A
LD HL,#3C00
LD DE,#8000
PUSH DE
LD (ZX_VARS.ZG),DE
LD BC,#0400
LDIR
LD (IY+#47),#00
POP HL
LD BC,#0080
.big_loop: PUSH BC
INC HL
INC HL
INC HL
LD B,#03
.loop1: LD D,(HL)
LD A,D
RLA
OR D
LD (HL),A
INC HL
DJNZ .loop1
POP BC
DEC BC
INC HL
INC HL
LD A,B
OR C
JR NZ,.big_loop
XOR A
OUT (BorderColor),A
LD A,#44
LD (ZX_VARS.BORDER),A
DEC A
DEC A
LD (ZX_VARS.ATTR_P),A
CALL ROUTINE.cls
.loop2: DI
XOR A
LD (VAR_1),A
.var_3+1: LD HL,LL3761
PUSH HL
LD (ZX_VARS.ERR_SP),SP
LD (IY+#00),#FF
LD A,(ZX_VARS.CONT_DISK)
LD C,#01
CALL #3D13
LD HL,#9000
LD DE,#0000
LD BC,#0805
CALL #3D13
LD A,(IY+#00)
CP #FF
JR NZ,.loop2
LD HL,.loop2
LD (.var_3),HL
EXX
LD DE,#A000
EXX
LD HL,#9000
LD DE,#0008
LD A,(HL)
OR A
JP Z,LF887
.loop3: LD DE,#0008
ADD HL,DE
LD A,(HL)
CP #42
CALL Z,LF836
ADD HL,DE
LD A,(HL)
OR A
JR NZ,.loop3
LD A,(VAR_1)
OR A
JP Z,LF887
LD B,#3F
SBC A,B
JP NC,LF8A6
LD A,(VAR_1)
DEC A
LD (#F86F),A
CALL #F9BB
LD (#F653),A
CALL #0D6B
DI
CALL #F870
LD A,#02
CALL #F8CB
LD A,#02
CALL #1601
LD (IY+#47),#00
LD DE,#A000
LD HL,#0008
.loop4: LD A,#20
RST #10
LD A,#20
RST #10
LD BC,#0008
PUSH DE
CALL #203C
POP DE
EXD
ADC HL,DE
EXD
LD A,(VAR_1)
DEC A
LD (VAR_1),A
JR Z,LL0f35
LD A,#20
RST #10
LD A,#20
RST #10
LD BC,#0008
PUSH DE
CALL #203C
POP DE
EXD
ADC HL,DE
EXD
LD A,(VAR_1)
DEC A
LD (VAR_1),A
JR Z,LL0f35
LD A,#20
RST #10
LD A,#20
RST #10
LD BC,#0008
PUSH DE
CALL #203C
POP DE
EXD
ADC HL,DE
EXD
LD A,(VAR_1)
DEC A
LD (VAR_1),A
JR Z,LL0f35
LD A,#06
RST #10
JR .loop4
;
.ERR_SP: WORD 0
NOP
LL0f35 LD HL,#5802
CALL #F816
LD DE,#000A
LD IX,#F634
LD (IX+#00),#00
LL0f46 EI
RES 5,(IY+#01)
HALT
PUSH HL
PUSH IX
CALL #F9BB
CP #40
JP NZ,#F792
CALL #F989
POP IX
POP HL
BIT 5,(IY+#01)
JR Z,LL0f46
LD A,(#5C08)
CP 8
JP Z,#F6ED
CP "o"
JR Z,LL0fed
CP "6"
JR Z,LL0fed
CP 9
JP Z,#F70C
CP "p"
JP Z,#F70C
CP "7"
JP Z,#F70C
CP 11
JP Z,#F72E
CP "q"
JP Z,#F72E
CP "9"
JP Z,#F72E
CP 10
JP Z,#F764
CP "a"
JP Z,#F764
CP "8"
JP Z,#F764
CP "d"
JP Z,#FA1B
CP "1"
JR Z,LL0fd0
CP "2"
JR Z,LL0fd0
CP "3"
JR Z,LL0fd0
CP "4"
JR Z,LL0fd0
PUSH AF
LD A,#FE
IN A,(#FE)
RRA
JR NC,LL0f46
POP AF
CP 13
JP Z,#F79D
CP "0"
JP Z,#F79D
CP 32
JP Z,#F79D
JP #F646
LL0fd0 PUSH AF
CALL #0D6B
LD A,#03
CALL #F8CB
POP AF
SUB #31
LD C,#01
LD (#5CF8),A
LD (#5CF9),A
LD (ZX_VARS.CONT_DISK),A
CALL #3D13
JP #F556
LL0fed CALL #F870
CALL #F826
DEC (IX)
bootst2
bootln1 = $-bootkus1
LD A,(IX+#00)
CP #FF
JR NZ,LL345b
LD A,(#F86F)
LD (IX+#00),A
LL345b CALL #F7FA
CALL #F816
JP #F646
CALL #F870
CALL #F826
INC (IX+#00)
LD A,(#F86F)
INC A
CP (IX+#00)
LD A,(IX+#00)
JR NZ,LL347d
XOR A
LD (IX+#00),A
LL347d CALL #F7FA
CALL #F816
JP #F646
CALL #F870
CALL #F826
DEC (IX+#00)
DEC (IX+#00)
DEC (IX+#00)
BIT 7,(IX+#00)
LD A,(IX+#00)
JR Z,LL34b3
LL349e LD B,#03
ADD A,B
LD B,A
PUSH BC
LD A,(#F86F)
SUB B
JR C,LL34ac
POP AF
JR LL349e
LL34ac POP AF
DEC A
DEC A
DEC A
LD (IX+#00),A
LL34b3 CALL #F7FA
CALL #F816
JP #F646
CALL #F870
CALL #F826
INC (IX+#00)
INC (IX+#00)
INC (IX+#00)
LD A,(#F86F)
SBC A,(IX+#00)
LD A,(IX+#00)
JR NC,LL34e1
LD B,#03
LL34d8 SUB B
JR NC,LL34d8
INC A
INC A
INC A
LD (IX+#00),A
LL34e1 CALL #F7FA
CALL #F816
JP #F646
CALL #0D6B
LD A,#03
CALL #F8CB
JP #F556
LD BC,#FFFD
LD A,#07
OUT (C),A
LD B,#BF
LD A,#FF
OUT (C),A ;£«ãè¨â AY
CALL #F870
LD A,#07
LD (#5C48),A
LD (#5C8D),A
CPL
LD (#5D3B),A
LD HL,#3C00
LD (#5C36),HL
LD L,(IX+#00)
LD H,#00
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD DE,#A000
ADD HL,DE
LD DE,#F7F0
LD BC,#0008
LDIR
LD HL,(#F632)
LD (ZX_VARS.ERR_SP),HL
LD HL,#F7EC
LD (#5C5D),HL
CALL #0D6B
DI
POP HL
EXX
POP BC
POP DE
POP HL
POP AF
CALL #3D03
JP PE,#F73A
LD (#6F62),HL
LD L,A
LD (HL),H
JR NZ,LL356e
JR NZ,LL3570
LD (#D50D),HL
INC A
LD HL,#5802
LD DE,#000A
LL355a DEC A
JR Z,LL356c
ADD HL,DE
DEC A
JR Z,LL356c
ADD HL,DE
DEC A
JR Z,LL356c
INC DE
INC DE
ADD HL,DE
DEC DE
DEC DE
JR LL355a
LL356c POP DE
RET
LL356e PUSH HL
EXX
LL3570 POP HL
LD A,#70
PUSH HL
POP DE
INC DE
LD BC,#0007
LD (HL),A
LDIR
EXX
RET
PUSH HL
EXX
POP HL
LD A,#42
PUSH HL
POP DE
INC DE
LD BC,#0007
LD (HL),A
LDIR
EXX
RET
;
LF836: PUSH HL
PUSH DE
SBC HL,DE
LD A,(HL)
LD B,#20
SBC A,B
JR C,LL35c3
LD IX,#F981
PUSH HL
LD BC,#0800
LL35a0 LD A,(HL)
CP (IX+#00)
JR NZ,LL35a7
INC C
LL35a7 INC HL
INC IX
DJNZ LL35a0
LD A,C
CP #08
JR NZ,LL35b4
POP HL
JR LL35c3
LL35b4 EXX
POP HL
LD BC,#0008
LDIR
EXX
LD A,(VAR_1)
INC A
LD (VAR_1),A
LL35c3 POP DE
POP HL
RET
VAR_1: DB 0
VAR_2: DB 0
PUSH AF
PUSH BC
LD B,#D2
LL35cc PUSH BC
XOR A
OUT (#FE),A
RR B
LL35d2 DJNZ LL35d2
SET 4,A
OUT (#FE),A
POP BC
DEC B
DJNZ LL35cc
POP BC
POP AF
RET
;
LF887: XOR A
CP (IY+#47)
JP NZ,#F556
CALL #0D6E
LD A,#02
CALL #1601
XOR A
CALL #F8CB
LD A,#01
CALL #1601
LD (IY+#47),#FE
JP #F795
;
LF8A6: XOR A
CP (IY+#47)
JP NZ,#F556
CALL #0D6E
LD A,#02
CALL #1601
LD A,#01
CALL #F8CB
LD A,#3F
LD (VAR_1),A
LD BC,#FFFF
LL361a NOP
DJNZ LL361a
DEC C
JR NZ,LL361a
JP #F5B4
LD DE,#F8D1
JP #0C0A
DB #80
DB #16,#0A,#05
DB "!!! NO PROGRAMS !!!"
DB (" "+#80)
DB #16,#0A,#03,#10,#04
DB "MORE THAN 63 BASIC FILES" ;than!!!
DB (" "+#80)
DB #11,#00,#10,#04,#13,#01
DB " -=New ROM boot v1.06=-"
DB #06
DB "Remix by CompoWellcome 05.02.99"
DB ("."+#80)
DB #10,#02,#13,#01
DB " INSERT NEW DISK"
DB #06
DB " FOR READING CATALOGUE." ;catalogue!
DB (" "+#80)
DB "boot "
LD HL,#5AE1
PUSH HL
POP DE
DEC DE
LD BC,#001F
LDIR
LD HL,#5AFF
LD A,(#F9BA)
OR A
JR Z,LL3703
LD A,(HL)
AND #07
INC A
CP #08
JR NZ,LL3710
XOR A
LD (#F9BA),A
LD A,#07
LL3703 LD A,(HL)
AND #07
DEC A
OR A
JR NZ,LL3710
CPL
LD (#F9BA),A
LD A,#01
LL3710 LD (HL),A
RET
LL3712 NOP
LD A,#C3
LD (#5CC2),A
LD HL,#F9E6
LD (#5CC3),HL
LD IX,#2FC1
CALL #FA20
LD A,#08
LD C,#1F
LD IX,#2A53
CALL #FA20
LD (#F9E7),SP
LD DE,#0000
LD IX,#2740
CALL #FA20
LD SP,#0000
LD IX,#1FF3
CALL #FA20
LD IX,#1FEB
CALL #FA20
LD IX,#2FC1
CALL #FA20
LD A,#C9
LD (#5CC2),A
LD A,(#5CCD)
AND #40
RET
LL3761 LD A,#30
INC A
CP #33
LD (#FA0A),A
JP NZ,#F6D0
LD A,#30
LD (#FA0A),A
JR LL3761
DI
LD IX,#0000
PUSH IX
JP #3D2F
BLOCK 3,#FF
ENT