internal boot in tr-dos

This commit is contained in:
Tolik 2025-06-13 05:23:55 +10:00
parent bc1413f28d
commit d297c9f907
10 changed files with 394 additions and 633 deletions

View File

@ -10638,24 +10638,35 @@ 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

View File

@ -4,6 +4,24 @@
;º RE-SOURCE'd by Z80MU PROFESSIONAL version 5.2b º ;º RE-SOURCE'd by Z80MU PROFESSIONAL version 5.2b º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
;!TODO ¨á¯®«ì§®¢ âì ¢­¥è­¨¥ ¯®àâë #E0 ¨ #E3 ¤«ï á®åà ­¥­¨ï ॣ¨áâ஢ ¯à¨ ¯¥à¥å¢ â¥ ¢á直å #3D2F ;!TODO ¨á¯®«ì§®¢ âì ¢­¥è­¨¥ ¯®àâë #E0 ¨ #E3 ¤«ï á®åà ­¥­¨ï ॣ¨áâ஢ ¯à¨ ¯¥à¥å¢ â¥ ¢á直å #3D2F
; [ ] boot loader from TR-DOS vROM
;SHELLEXEC "sjasmplus --nologo --syntax=f --fullpath --color=on --exp=trdos/boot/boot.inc --lst=Build/boot.lst --raw=Build/boot.bin trdos/boot/boot.asm"
LUA PASS1
compiling_boot = (os.execute("sjasmplus --nologo --syntax=f --fullpath --color=on --exp=trdos/boot/boot.inc --lst=Build/boot.lst --raw=Build/boot.bin trdos/boot/boot.asm"))
if compiling_boot then
print("--[ BOOT Build OK ]--")
--sj.insert_define("_BOOT_COMPILED_", "1")
else
print("--[ BOOT Build ERROR!!! ]--")
--sj.insert_define("_BOOT_COMPILED_", "0")
os.exit(1)
end
ENDLUA
; IF _BOOT_COMPILED_ = 0
; assert 1, Error whith boot.asm
; ENDIF
DEVICE ZXSPECTRUM128 DEVICE ZXSPECTRUM128
ORG 0 ORG 0
@ -14,6 +32,9 @@
INCLUDE 'Shared_Includes/constants/BIOS_equ.inc' INCLUDE 'Shared_Includes/constants/BIOS_equ.inc'
INCLUDE 'Shared_Includes/constants/ZX_VARS.inc' INCLUDE 'Shared_Includes/constants/ZX_VARS.inc'
INCLUDE 'Shared_Includes/macroses/macros.z80' INCLUDE 'Shared_Includes/macroses/macros.z80'
MODULE vROM_Boot
INCLUDE 'trdos/boot/boot.inc'
ENDMODULE
TRDOS_ROM_CMD: TRDOS_ROM_CMD:
.READ_BPB EQU BIOS.HDD_READ_BPB and #BF .READ_BPB EQU BIOS.HDD_READ_BPB and #BF
@ -552,6 +573,53 @@ AUTO_0359:
POP HL POP HL
JP (HL) JP (HL)
; [x] 13/06/2025 boot loader from TR-DOS vROM
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
PREPARE_TO_vROM_BOOT:
LD A,(ZX_VARS.RUN_AUTO_BOOT)
AND A ; ¯à¨§­ ª ¯®¯ë⪨ § ¯ã᪠ boot ª®¬ ­¤®© RUN ¡¥§ ¯ à ¬¥â஢
JP Z,AUTO_03D9
;
DI
LD HL,(ZX_VARS.ADR_RET)
LD (ZX_VARS.FL_START),HL ; ¢à¥¬¥­­® á®å࠭塞 ADR_RET
LD HL,vROM_BOOT ;  ¤à¥á ¢®§¢à â  ¨§ AUTO_01D3
LD (ZX_VARS.ADR_RET),HL
JP AUTO_01D3
;
vROM_BOOT: LD HL,(ZX_VARS.FL_START)
LD (ZX_VARS.ADR_RET),HL ; ¢®ááâ ­ ¢«¨¢ ¥¬ ADR_RET
;
LD HL,BOOT_PART_1.SIZE + BOOT_PART_2.SIZE
LD (ZX_VARS.FL_START),HL ; ¤«¨­  ¯à®£à ¬¬ë á ¯¥à¥¬¥­­ë¬¨.
LD (ZX_VARS.FL_LEN),HL ; ¤«¨­  ¯à®£à ¬¬ë á ¯¥à¥¬¥­­ë¬¨.
;
CALL AUTO_1A01 ; <20>®¤£®â®¢ª  ª § £à㧪¥ ¯à®£à ¬¬ë ­  ¡¥©á¨ª¥.
;
LD HL,.LoadAddr
LD (ZX_VARS.BAS_PROG),HL ;  ¤à¥á ­ ç «  ¯à®£à ¬¬ë ­  ¡¥©á¨ª¥.
; loading
LD HL,BOOT_PART_1
LD DE,.LoadAddr
LD BC,BOOT_PART_1.SIZE
LDIR
LD HL,BOOT_PART_2
LD BC,BOOT_PART_2.SIZE
LDIR
;
;LD HL,.StartAddr + BOOT_PART_1.SIZE + BOOT_PART_2.SIZE - 3
LD HL,vROM_Boot.StartLineNum
LD (ZX_VARS.E_LINE),HL
;
EI
JP AUTO_012A
;
.LoadAddr EQU vROM_Boot.org_addr ;#5D3B
.StartAddr EQU vROM_Boot.org_addr ;#5D3B
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
_mInfoBLOCK #03AC-$,#FF _mInfoBLOCK #03AC-$,#FF
; NAME_TRD: ; NAME_TRD:
@ -2298,7 +2366,10 @@ AUTO_187A:
CALL SINTAX_RET CALL SINTAX_RET
CALL AUTO_292F CALL AUTO_292F
AUTO_18A4: AUTO_18A4:
JP NZ,AUTO_03D9 ; [x] 13/06/2025 boot loader from TR-DOS vROM
;JP NZ,AUTO_03D9
JP NZ,PREPARE_TO_vROM_BOOT
;
CALL AUTO_165D CALL AUTO_165D
RET RET
AUTO_18AB: AUTO_18AB:
@ -6374,9 +6445,9 @@ EDIT_X05:
; JP ZX_VARS.AUTO_5C9A ; JP ZX_VARS.AUTO_5C9A
;************************************** ;**************************************
; DSS 3900H,'#' ; DSS 3900H,'#'
BOOT_PART_1: INCBIN 'build/boot.bin', 0, 248
.SIZE EQU $-BOOT_PART_1
;********************************** ;**********************************
_mInfoBLOCK #3C00 - $,255 _mInfoBLOCK #3C00 - $,255
AUTO_3C00: AUTO_3C00:
@ -6550,6 +6621,7 @@ REDIR_3D13:
;JP HD_CMD ;#3FF0 ROM. DI ;JP HD_CMD ;#3FF0 ROM. DI
JP EXP_FNS JP EXP_FNS
; ;
;***************************** ;*****************************
_mInfoBLOCK #3CFA - $,255 _mInfoBLOCK #3CFA - $,255
AUTO_3CFA: AUTO_3CFA:

@ -1 +1 @@
Subproject commit 68e156a69e848e7b01656cdf67122022999d75ee Subproject commit 63faf9f0823649cfb52e9fcaad430170a05b31a7

Binary file not shown.

View File

@ -238,6 +238,32 @@ RESTORE_CURRENT_DIR:
POP AF POP AF
RET RET
; ;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
BOOT_PART_2: INCBIN 'build/boot.bin',248
.SIZE EQU $-BOOT_PART_2
;
; vROM_BOOT: DI
; LD HL,BOOT_PART_1
; LD DE,#5D3B
; LD BC,BOOT_PART_1.SIZE
; LDIR
; LD HL,BOOT_PART_2
; LD BC,BOOT_PART_2.SIZE
; LDIR
; ;
; EI
; ;
; LD HL,#5EC9
; LD (ZX_VARS.E_LINE),HL
; JP AUTO_012A
; ;
; ; RST RST20 ; áâ ­¤. ¢¢®¤ ¢ ¡ãä¥à । ªâ¨à®¢ ­¨ï
; ; DW #5D65
; ; RET
; ;
; ; LD HL,#5D65
; ; PUSH HL
; ; JP CMD_RETURN
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
DISPLAY "TR_HDD_4.ASZ size: ",/A,$-File_Start DISPLAY "TR_HDD_4.ASZ size: ",/A,$-File_Start
DISPLAY "====================================================" DISPLAY "===================================================="

View File

@ -581,8 +581,7 @@ MSDOS_MSG: DC 'File not found'
NO_MEMORY: DC 'Out of memory' NO_MEMORY: DC 'Out of memory'
;NO_MEMORY: DC 'No RAM-Disk MEM' ;NO_MEMORY: DC 'No RAM-Disk MEM'
WORDS: DB 5,'CLEAR' ; ®ç¨áâ¨âì RAM-Disk WORDS:
DW CLEAR_RAMD_X
DB 3,'CAT' ; ª â «®£ MS-DOS DB 3,'CAT' ; ª â «®£ MS-DOS
DW MSDOS_CAT DW MSDOS_CAT
DB 3,'DIR' ; ª â «®£ MS-DOS DB 3,'DIR' ; ª â «®£ MS-DOS
@ -607,6 +606,8 @@ WORDS: DB 5,'CLEAR' ;
DW TB_ONOFF DW TB_ONOFF
DB 4,'INIT' ; २­¨§¨ «¨§ æ¨ï DB 4,'INIT' ; २­¨§¨ «¨§ æ¨ï
DW INIT_RMD DW INIT_RMD
DB 5,'CLEAR' ; ®ç¨áâ¨âì RAM-Disk
DW CLEAR_RAMD_X
DB 8,"SPRINTER" DB 8,"SPRINTER"
DW SPR_1 DW SPR_1
DB 2,"AY" DB 2,"AY"

View File

@ -445,6 +445,8 @@ FAT_16_L2:
POP AF POP AF
SCF SCF
RET RET
;-----------------------------------------------------------------------
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
;INCLUDE 'trdos/tr_msd_4.asz' ;INCLUDE 'trdos/tr_msd_4.asz'

265
TRDOS/boot/boot.asm Executable file
View File

@ -0,0 +1,265 @@
; device zxspectrum48
INCLUDE 'inc/rom_routines.inc'
INCLUDE 'Shared_Includes/constants/ZX_VARS.inc'
INCLUDE 'Shared_Includes/constants/zx_char_codes.inc'
;=======================================================================
collor_A EQU 0x03
collor_B EQU 0x02
collor_M EQU 0x08
collor_T EQU 0x07
org_addr EQU #5d3b
ORG org_addr
bstart: DW #100 ; line number = 1
DW l1end-l1begin ; line length
l1begin: DB ZX_Token.randomize,ZX_Token.usr,#30 ; 'rand' 'usr' 0
DB #0e,#00,#00 : DW start : DB #00,#0d ; start address
l1end: DW #200 ; line number = 2
DW l2end-l2begin ; line length
l2begin: DB #f9,#c0,#30 ; ':' 'rand' 'usr' 0
DB #0e,#00,#00 : DW 15619 : DB #00 ; start address
DB #3a,#ea,#3a,#f7,#22
filename: DB "boot ",#22,#3a ; ':' 'rem' run
;=======================================================================
;org #5d65
start: LD (memSP),SP
NewDisk: XOR A
OUT (0xfe),A
; ld de, 0x5aff
; .l0
; ld (de), a
; dec de
; cp d
; jr nz, .l0
LD (ZX_VARS.ATTR_P),A
LD (ZX_VARS.BORDER),A
CALL BASIC_FN.x48.cls
LD BC,0x0905
LD DE,0
LD HL,catBuff
;.3 nop
CALL 0x3d13
LD A,"a"
LD (main.markPos),A
main: LD A,collor_T
LD (var_collor),A
LD HL,0x50cc
LD (var_printPos),HL
LD HL,catBuff+0x08f5
.p1: LD A,(HL)
PUSH HL
CALL printChar
POP HL
INC L
LD A,L
CP low (catBuff+0x08fd)
JR NZ,.p1
LD HL,0x4000
LD (var_printPos),HL
LD HL,catBuff
.markPos+2: LD BC,"aa"
.l1: LD A,(HL)
DEC A
JR Z,.n1
JP M,.e1
;boot detect
; cp "b"-1
; jr nz, .s2
; inc l
; ld a, "o"
; cp (hl)
; jr nz, .s2
; inc l
; cp (hl)
; jr nz, .s2
; inc l
; ld a, (hl)
; cp "t"
; jr nz, .s2
; .l4: inc l
; bit 3, l
; jr z, .n1
; ld a, " "
; cp (hl)
; jr z, .l4
;
.s2: LD A,L
AND 0xf0
ADD A,0x08
LD L,A
LD A,(HL)
CP "B"
RES 3,L
JR NZ,.n1
LD A,C
CP B
LD A,collor_A
JR NZ,.s1
XOR collor_M
LD DE,filename
PUSH BC
LD BC,0x08
LDIR
POP BC
RES 3,L
.s1: LD (var_collor),A
LD A,C
PUSH HL
CALL printChar
LD A," "
CALL printChar
POP HL
.l2: LD A,(HL)
INC HL
PUSH HL
CALL printChar
POP HL
LD A,L
AND 0x07
JR NZ,.l2
LD A,(var_printPos)
AND 0x1f
JR Z,.s3
LD A," "
PUSH HL
CALL printChar
POP HL
.s3: INC C
.n1: LD A,L
AND 0xf0
LD L,A
LD DE,0x0010
ADD HL,DE
JR .l1
.e1:; ld a, c
; sub "a"
; ld (var_files), a
keys: RES 5,(iy+1)
.w1: BIT 5,(iy+1)
JR Z,.w1
LD A,(iy-0x32)
CP B
JR Z,exit
CP 0x0d
JR Z,exit
CP " "
JP Z,NewDisk
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
JP main
; var_files db 0
exit:
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
;
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 $ + (-$&0x0f)
EXPORT StartLineNum
EXPORT org_addr
;

2
TRDOS/boot/boot.inc Normal file
View File

@ -0,0 +1,2 @@
StartLineNum: EQU 0x00005EAA
org_addr: EQU 0x00005D3B

View File

@ -1,618 +0,0 @@
/*
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 BASIC_FN.x48.x48.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