From d9052b6952acaca79e58f82e5aa9401968917e81 Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Wed, 25 Jun 2025 23:03:52 +1000 Subject: [PATCH] release 25/06/2025 --- SP_TRDOS.ASM | 24 +++-- TRDOS/TR_HDD_4.ASZ | 7 +- TRDOS/boot/boot.asm | 224 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 241 insertions(+), 14 deletions(-) diff --git a/SP_TRDOS.ASM b/SP_TRDOS.ASM index d9eabb9..bce2e2f 100644 --- a/SP_TRDOS.ASM +++ b/SP_TRDOS.ASM @@ -6,21 +6,19 @@ ;!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" + DEFINE DEFtrd_boot_small 0 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")) + -- --define + local sjasmplus_run = "sjasmplus --nologo --syntax=f --fullpath --color=on --exp=trdos/boot/boot.inc --lst=Build/boot.lst --raw=Build/boot.bin trdos/boot/boot.asm --define DEFtrd_boot_small=" .. sj.get_define("DEFtrd_boot_small") + compiling_boot = (os.execute(sjasmplus_run)) 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 @@ -595,7 +593,11 @@ vROM_BOOT: LD HL,(ZX_VARS.ADR_RET) .continue: LD HL,(ZX_VARS.FL_START) LD (ZX_VARS.ADR_RET),HL ; ЂЎсст ­ ЂЋЈЂ ЅЌ ADR_RET ; + IF DEFtrd_boot_small + LD HL,BOOT_PART_1.SIZE + BOOT_PART_2.SIZE + ELSE LD HL,BOOT_PART_1.SIZE + BOOT_PART_2.SIZE + BOOT_PART_3.SIZE + ENDIF LD (ZX_VARS.FL_START),HL ; ЄЋЈ­  ЏрЎЃр ЌЌы с ЏЅрЅЌЅ­­ыЌЈ. LD (ZX_VARS.FL_LEN),HL ; ЄЋЈ­  ЏрЎЃр ЌЌы с ЏЅрЅЌЅ­­ыЌЈ. ; @@ -611,11 +613,12 @@ vROM_BOOT: LD HL,(ZX_VARS.ADR_RET) LD HL,BOOT_PART_2 LD BC,BOOT_PART_2.SIZE LDIR + IFN DEFtrd_boot_small LD HL,BOOT_PART_3 LD BC,BOOT_PART_3.SIZE LDIR - - ;LD HL,.StartAddr + BOOT_PART_1.SIZE + BOOT_PART_2.SIZE - 3 + ENDIF + LD HL,vROM_Boot.StartLineNum LD (ZX_VARS.E_LINE),HL ; @@ -1226,9 +1229,10 @@ WG93_EXE_: ;************************************** ;ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл ; [x] 13/06/2025 boot loader from TR-DOS vROM - + IFN DEFtrd_boot_small BOOT_PART_3: INCBIN 'build/boot.bin',429 .SIZE EQU $-BOOT_PART_3 + ENDIF ;ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл ;************************************** diff --git a/TRDOS/TR_HDD_4.ASZ b/TRDOS/TR_HDD_4.ASZ index 1f777ab..a08b573 100644 --- a/TRDOS/TR_HDD_4.ASZ +++ b/TRDOS/TR_HDD_4.ASZ @@ -239,7 +239,12 @@ RESTORE_CURRENT_DIR: RET ; ;ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл -BOOT_PART_2: INCBIN 'build/boot.bin',248,181 +BOOT_PART_2: + IF DEFtrd_boot_small + INCBIN 'build/boot.bin',248 + ELSE + INCBIN 'build/boot.bin',248,181 + ENDIF .SIZE EQU $-BOOT_PART_2 ;ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл DISPLAY "TR_HDD_4.ASZ size: ",/A,$-File_Start diff --git a/TRDOS/boot/boot.asm b/TRDOS/boot/boot.asm index 554013a..b04578d 100755 --- a/TRDOS/boot/boot.asm +++ b/TRDOS/boot/boot.asm @@ -1,7 +1,214 @@ -; device zxspectrum48 + IF DEFtrd_boot_small + +;======================================================================; INCLUDE 'inc/rom_routines.inc' INCLUDE 'Shared_Includes/constants/ZX_VARS.inc' INCLUDE 'Shared_Includes/constants/zx_char_codes.inc' + INCLUDE 'Shared_Includes/constants/standart_colors.inc' +;======================================================================; + + +;======================================================================; +collor_A EQU 0x03 +collor_B EQU 0x02 +collor_N EQU 0x04 +collor_M EQU 0x08 +collor_T EQU 0x07 +org_addr EQU #5d3b +;======================================================================; + + +; Variables +;======================================================================; +ColumnNumber EQU #70E0 +Columns EQU 3 +;======================================================================; + + +;======================================================================; + ORG org_addr +bstart: DW #100 ; line number = 1 + DW l1end - l1begin ; line length +l1begin: DB ZX_Token.border, ZX_Token.not, ZX_Token.pi, ":" + DB ZX_Token.randomize, ZX_Token.usr, ZX_Token.val, '"',"23907",'"' + DB ":", ZX_Token.rem, ":", ZX_Token.run + DB '"' +BootName: DB ZX_Char.tab, 10, 32 + DB "MAXBOOT v9.1" +.size EQU $-BootName + DB '"', ZX_Char.carriage_return +;======================================================================; + +;#70F6 - disk name + +;======================================================================; +START_BOOT: ;Permanent current colours, etc, as set up by colour statements. + LD (iy+#53),COLORS.ZX.CYAN ;5d63 fd 36 53 05 . 6 S . +l5d67h: CALL BASIC_FN.x48.cls ;5d67 cd 6b 0d . k . + ADD HL,BC ;5d6a 09 . + ; HL = 6801 + ; read 9 sectors + LD BC,#0905 ;5d6b 01 05 09 . . . + PUSH HL ;5d6e e5 . + CALL #3D13 ;5d6f cd 13 3d . . = + ;PR-STRING + LD DE,BootName ;5d72 11 52 5d . R ] + LD C,BootName.size ;5d75 0e 0f . . + CALL #203C ;5d77 cd 3c 20 . < + ;CHAN_OPEN + ; Open channel 2 (main screen) + LD A,#02 ;5d7a 3e 02 > . + CALL #1601 ;5d7c cd 01 16 . . . + ; + POP HL ;5d7f e1 . + LD D,H ;5d80 54 T + LD E,L ;5d81 5d ] +loopDir: LD BC,8 ; сЌЅщЅ­ЈЅ ­  тЈЏ ф ЉЋ  ;5d82 01 08 00 . . . + DEC (HL) ;5d85 35 5 + JR Z,.nextFile ;5d86 28 28 ( ( + INC (HL) ;5d88 34 4 + JR Z,.EXIT ;5d89 28 2a ( * + ; + PUSH HL ;5d8b e5 . + ADD HL,BC ;5d8c 09 . + LD A,(HL) ;5d8d 7e ~ + POP HL ;5d8e e1 . + CP "B" ;5d8f fe 42 . B + JR NZ,.nextFile ;5d91 20 1d . + PUSH HL ;5d93 e5 . + ;PRINT-A + LD A," " ;5d94 3e 20 > + RST #10 ;5d96 d7 . + ; (#5C51) == #5D2B + ; (#5D2B) == #09F4 + ; ЂыЂЎЄ ЈЌЅ­Ј ф ЉЋ  +.loopPrint: LD A,(HL) ;5d97 7e ~ + RST #10 ;5d98 d7 . + LDI ;5d99 ed a0 . . + JP PE,.loopPrint ;5d9b ea 97 5d . . ] + ; ЏЎЄсчёт ЊЎЋЎ­ЎЊ ЄЋя Џр ЂЈЋь­ЎЃЎ ЂыЂЎЄ  ЈЌё­ ф ЉЋЎЂ + LD HL,ColumnNumber ;5d9e 21 e0 70 ! . p + INC (HL) ;5da1 34 4 + LD A,(HL) ;5da2 7e ~ +.loopColumn: SUB Columns ;5da3 d6 03 . . + JR Z,.ColumnThree ;5da5 28 05 ( . + JR NC,.loopColumn ;5da7 30 fa 0 . + LD A," " ;5da9 3e 20 > + RST #10 ;5dab d7 . +.ColumnThree: LD A," " ;5dac 3e 20 > + RST #10 ;5dae d7 . + ; + POP HL ;5daf e1 . +.nextFile: LD C,#10 ;5db0 0e 10 . . + ADD HL,BC ;5db2 09 . + JR loopDir ;5db3 18 cd . . +.EXIT: ; +;;;;;;;;;;;;;;;;; + ; B = 0 + ; ЈсЎЂ ЋЊ  ЊурсЎр   трЈЁут ЌЈ. ЅрЅЌЅщЅ­ЈЅ ЊурсЎр  +MAIN_LOOP: LD C,B ;5db5 48 H +l5db6h: LD HL,#57F5 ;5db6 21 f5 57 ! . W + LD DE,#000B ;5db9 11 0b 00 . . . + LD A,D ;5dbc 7a z +l5dbdh: LD B,#03 ;5dbd 06 03 . . +l5dbfh: ADD HL,DE ;5dbf 19 . + CP C ;5dc0 b9 . + JR Z,l5dc9h ;5dc1 28 06 ( . + INC A ;5dc3 3c < + DJNZ l5dbfh ;5dc4 10 f9 . . + DEC HL ;5dc6 2b + + JR l5dbdh ;5dc7 18 f4 . . + ; +l5dc9h: LD B,#0A ;5dc9 06 0a . . + LD DE,(#70DE) ;5dcb ed 5b de 70 . [ . p + LD (#70DE),HL ;5dcf 22 de 70 " . p + LD A,#05 ;5dd2 3e 05 > . +l5dd4h: LD (DE),A ;5dd4 12 . + INC DE ;5dd5 13 . + LD (HL),#1E ;5dd6 36 1e 6 . + INC HL ;5dd8 23 # + DJNZ l5dd4h ;5dd9 10 f9 . . + LD HL,#5C08 ;5ddb 21 08 5c ! . \ + LD (HL),H ;5dde 74 t +l5ddfh: LD A,(HL) ;5ddf 7e ~ + OR #20 ;5de0 f6 20 . + SUB #20 ;5de2 d6 20 . + JR Z,l5d67h ;5de4 28 81 ( . + SUB L ;5de6 95 . + LD B,#02 ;5de7 06 02 . . +l5de9h: JR Z,l5e0fh ;5de9 28 24 ( $ + DEC A ;5deb 3d = + JR Z,l5e13h ;5dec 28 25 ( % + DEC A ;5dee 3d = + JR Z,l5e11h ;5def 28 20 ( + DEC A ;5df1 3d = + JR Z,l5e0dh ;5df2 28 19 ( . + SUB B ;5df4 90 . + JR Z,RUN_BASIC ;5df5 28 2d ( - + SUB #03 ;5df7 d6 03 . . + JR Z,RUN_BASIC ;5df9 28 29 ( ) + SUB #06 ;5dfb d6 06 . . + DJNZ l5de9h ;5dfd 10 ea . . + SUB #1E ;5dff d6 1e . . + JR Z,l5e11h ;5e01 28 0e ( . + SUB #0E ;5e03 d6 0e . . + JR Z,l5e0fh ;5e05 28 08 ( . + DEC A ;5e07 3d = + JR Z,l5e13h ;5e08 28 09 ( . + DEC A ;5e0a 3d = + JR NZ,l5ddfh ;5e0b 20 d2 . +l5e0dh: SUB #02 ;5e0d d6 02 . . +l5e0fh: SUB #04 ;5e0f d6 04 . . +l5e11h: ADD A,#02 ;5e11 c6 02 . . +l5e13h: ADD A,C ;5e13 81 . + LD BC,(ColumnNumber) ;5e14 ed 4b e0 70 . K . p + DEC C ;5e18 0d . + INC A ;5e19 3c < + JP M,l5db6h ;5e1a fa b6 5d . . ] + INC C ;5e1d 0c . + CP C ;5e1e b9 . + LD C,A ;5e1f 4f O + JR C,l5db6h ;5e20 38 94 8 . + JR MAIN_LOOP ;5e22 18 91 . . + ; + ; Ї ЏусЊ Ђ сЈЊ  + ; A = 0 +RUN_BASIC: LD B,A ;5e24 47 G + LD A,C ;5e25 79 y + INC A ;5e26 3c < + LD C,L ;5e27 4d M + LD HL,#67F9 ;5e28 21 f9 67 ! . g +.loop: ADD HL,BC ;5e2b 09 . + DEC A ;5e2c 3d = + JR NZ,.loop ;5e2d 20 fc . + ; + LD DE,BootName ;5e2f 11 52 5d . R ] + LDIR ;5e32 ed b0 . . + JP #3D03 ;5e34 c3 03 3d . . = + + + + ;ADD A,B ;5e37 80 . + ;XOR D ;5e38 aa . + ;DEFB 001h,000h ;5e39 01 00 . . + +StartLineNum: DB 0 + DW 0 + ;DB #80 +l1end: + + EXPORT StartLineNum + EXPORT org_addr + + + ELSE + +;======================================================================; + INCLUDE 'inc/rom_routines.inc' + INCLUDE 'Shared_Includes/constants/ZX_VARS.inc' + INCLUDE 'Shared_Includes/constants/zx_char_codes.inc' + INCLUDE 'Shared_Includes/constants/standart_colors.inc' +;======================================================================; ;======================================================================= collor_A EQU 0x03 @@ -11,6 +218,15 @@ collor_M EQU 0x08 collor_T EQU 0x07 org_addr EQU #5d3b +;======================================================================= +DiskName EQU catBuff + #08F5 +.size EQU 8 + +Columns EQU 3 + +vROMbootSize EQU bstart +;======================================================================= + ORG org_addr @@ -62,7 +278,7 @@ main: LD A,(.CurrentPage) LD (var_collor),A LD HL,#50CC LD (var_printPos),HL - LD HL,catBuff + #08F5 + LD HL,DiskName LD B,8 @@ -380,4 +596,6 @@ catBuff EQU #6000 ;$ + (-$&0x0f) ASSERT l2end < catBuff,"ERROR!!! Code leaks to catBuff" EXPORT StartLineNum EXPORT org_addr -; \ No newline at end of file +; + + ENDIF \ No newline at end of file