mirror of
https://github.com/Tolik-Trek/ZX-SP-ROMs.git
synced 2026-06-15 01:11:46 +03:00
619 lines
7.6 KiB
NASM
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
|