ZX-SP-ROMs/TRDOS/boot_trd.asm
2024-10-11 04:59:31 +10:00

619 lines
7.6 KiB
NASM

/*
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