diff --git a/SP_128.ASM b/SP_128.ASM index 0ea88f5..321f47f 100644 --- a/SP_128.ASM +++ b/SP_128.ASM @@ -10638,25 +10638,36 @@ L281C: LD HL,#EC0D ; Editor flags. ; JP L1AF1 ; Run the tape loader. L2831: 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. - BYTE #0A ; Key code: Cursor dow + ; + BYTE #0A ; Key code: Cursor down DEFW L2731 ; MENU-DOWN handler routine. - BYTE #0D ; Key code: Enter. + ; + BYTE #0D ; Key code: Enter. DEFW L2717 ; MENU-SELECT handler routine. + ; BYTE '8' ; на синклер-джойстике вниз DEFW L2731 ; MENU-DOWN handler routine. - BYTE '9' ; на синклер-джойстике вверх + ; + BYTE '9' ; на синклер-джойстике вверх DEFW L272E ; MENU-UP handler routine. - BYTE '0' ; на синклер-джойстике enter + ; + ; + BYTE '0' ; на синклер-джойстике enter DEFW L2717 ; MENU-SELECT handler routine. - BYTE '6' ; на синклер-джойстике влево Page Up + ; + BYTE '6' ; на синклер-джойстике влево Page Up DEFW LEFT_E ; MENU-PageUp - BYTE #08 ; Key code: Cursor left + ; + BYTE #08 ; Key code: Cursor left DEFW LEFT ; MENU-PageUp - BYTE '7' ; [x] было 7 + ; + BYTE '7' ; [x] было 7 DEFW RIGHT_E ; MENU-PageDown - BYTE #09 ; Key code: Cursor right + ; + BYTE #09 ; Key code: Cursor right DEFW RIGHT ; MENU-PageDown ; DB #1A ; просто стереть эту строчку, не нужна diff --git a/SP_TRDOS.ASM b/SP_TRDOS.ASM index fe2fd16..b7dcfec 100644 --- a/SP_TRDOS.ASM +++ b/SP_TRDOS.ASM @@ -4,6 +4,24 @@ ;║ RE-SOURCE'd by Z80MU PROFESSIONAL version 5.2b ║ ;╚══════════════════════════════════════════════════════════╝ ;!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 ORG 0 @@ -14,6 +32,9 @@ INCLUDE 'Shared_Includes/constants/BIOS_equ.inc' INCLUDE 'Shared_Includes/constants/ZX_VARS.inc' INCLUDE 'Shared_Includes/macroses/macros.z80' + MODULE vROM_Boot + INCLUDE 'trdos/boot/boot.inc' + ENDMODULE TRDOS_ROM_CMD: .READ_BPB EQU BIOS.HDD_READ_BPB and #BF @@ -552,6 +573,53 @@ AUTO_0359: POP 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 ; Подготовка к загрузке программы на бейсике. + ; + 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 ; NAME_TRD: @@ -2298,7 +2366,10 @@ AUTO_187A: CALL SINTAX_RET CALL AUTO_292F 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 RET AUTO_18AB: @@ -6374,9 +6445,9 @@ EDIT_X05: ; JP ZX_VARS.AUTO_5C9A ;************************************** - ; DSS 3900H,'#' - +BOOT_PART_1: INCBIN 'build/boot.bin', 0, 248 +.SIZE EQU $-BOOT_PART_1 ;********************************** _mInfoBLOCK #3C00 - $,255 AUTO_3C00: @@ -6550,6 +6621,7 @@ REDIR_3D13: ;JP HD_CMD ;#3FF0 ROM. DI JP EXP_FNS ; + ;***************************** _mInfoBLOCK #3CFA - $,255 AUTO_3CFA: diff --git a/Shared_Includes b/Shared_Includes index 68e156a..63faf9f 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 68e156a69e848e7b01656cdf67122022999d75ee +Subproject commit 63faf9f0823649cfb52e9fcaad430170a05b31a7 diff --git a/TR-DOS_6.11Q_PENTAGON512.ROM b/TR-DOS_6.11Q_PENTAGON512.ROM new file mode 100644 index 0000000..503d84c Binary files /dev/null and b/TR-DOS_6.11Q_PENTAGON512.ROM differ diff --git a/TRDOS/TR_HDD_4.ASZ b/TRDOS/TR_HDD_4.ASZ index fab5e3d..ecd2838 100644 --- a/TRDOS/TR_HDD_4.ASZ +++ b/TRDOS/TR_HDD_4.ASZ @@ -238,6 +238,32 @@ RESTORE_CURRENT_DIR: POP AF 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 "====================================================" \ No newline at end of file diff --git a/TRDOS/TR_MSD_2.ASZ b/TRDOS/TR_MSD_2.ASZ index 97d955e..9d149d9 100644 --- a/TRDOS/TR_MSD_2.ASZ +++ b/TRDOS/TR_MSD_2.ASZ @@ -581,8 +581,7 @@ MSDOS_MSG: DC 'File not found' NO_MEMORY: DC 'Out of memory' ;NO_MEMORY: DC 'No RAM-Disk MEM' -WORDS: DB 5,'CLEAR' ; очистить RAM-Disk - DW CLEAR_RAMD_X +WORDS: DB 3,'CAT' ; каталог MS-DOS DW MSDOS_CAT DB 3,'DIR' ; каталог MS-DOS @@ -607,6 +606,8 @@ WORDS: DB 5,'CLEAR' ; DW TB_ONOFF DB 4,'INIT' ; реинизиализация DW INIT_RMD + DB 5,'CLEAR' ; очистить RAM-Disk + DW CLEAR_RAMD_X DB 8,"SPRINTER" DW SPR_1 DB 2,"AY" diff --git a/TRDOS/TR_MSD_3.ASZ b/TRDOS/TR_MSD_3.ASZ index a161a4f..1073cc9 100644 --- a/TRDOS/TR_MSD_3.ASZ +++ b/TRDOS/TR_MSD_3.ASZ @@ -445,6 +445,8 @@ FAT_16_L2: POP AF SCF RET +;----------------------------------------------------------------------- + ;----------------------------------------------------------------------- ;INCLUDE 'trdos/tr_msd_4.asz' diff --git a/TRDOS/boot/boot.asm b/TRDOS/boot/boot.asm new file mode 100755 index 0000000..be43218 --- /dev/null +++ b/TRDOS/boot/boot.asm @@ -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 +; \ No newline at end of file diff --git a/TRDOS/boot/boot.inc b/TRDOS/boot/boot.inc new file mode 100644 index 0000000..34f5b4d --- /dev/null +++ b/TRDOS/boot/boot.inc @@ -0,0 +1,2 @@ +StartLineNum: EQU 0x00005EAA +org_addr: EQU 0x00005D3B diff --git a/TRDOS/boot_trd.asm b/TRDOS/boot_trd.asm deleted file mode 100644 index 122d6a5..0000000 --- a/TRDOS/boot_trd.asm +++ /dev/null @@ -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