diff --git a/TRDOS/boot/boot.asm b/TRDOS/boot/boot.asm index 02ad004..554013a 100755 --- a/TRDOS/boot/boot.asm +++ b/TRDOS/boot/boot.asm @@ -16,14 +16,17 @@ org_addr EQU #5d3b 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 +l1begin: DB ZX_Token.randomize,ZX_Token.usr,"0" ; 'rand' 'usr' 0 + DB ZX_Char.number + DB #00,#00 : DW start : DB #00 ; start address + DB ZX_Char.carriage_return 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 +l2begin: DB ZX_Token.randomize,ZX_Token.usr,"0" ; ':' 'rand' 'usr' 0 + DB ZX_Char.number + DB #00,#00 : DW 15619 : DB #00 ; start address + DB ":",ZX_Token.rem,":",ZX_Token.run,'"' +filename: DB "boot ",'"',":" ; ':' 'rem' run ;======================================================================= ;org #5d65 @@ -54,7 +57,8 @@ main.PagesCounter: ; main: LD A,(.CurrentPage) LD (.PagesCounter),A -.nextLoop: LD A,collor_T +.nextLoop: CALL PRINT_HELP + LD A,collor_T LD (var_collor),A LD HL,#50CC LD (var_printPos),HL @@ -123,13 +127,14 @@ PRINT_NEXT_BUTTONS: LD A,(main.PagesCounter) LD (keys.nxtPage),A DEC A - JR Z,.noChange + ;JR Z,.noChange + JR Z,keys LD (main.PagesCounter),A LD (main.buffPointer),HL -.noChange: PUSH AF - CALL PRINT_HELP - POP AF - JP Z,keys +.noChange: ;PUSH AF + ;CALL PRINT_HELP + ;POP AF + ;JP Z,keys JR keys.toMain PRINT_HELP: LD HL,#5040 @@ -149,7 +154,7 @@ PRINT_HELP: LD HL,#5040 ; DirShowDone: XOR A LD (keys.nxtPage),A - CALL PRINT_HELP + ;CALL PRINT_HELP keys: RES 5,(iy+1) .w1: BIT 5,(iy+1) JR Z,.w1 @@ -234,7 +239,9 @@ keys: RES 5,(iy+1) -exit: +exit: LD A,C + CP "a" + JP Z,NewDisk memSP+1: LD SP,0 RET @@ -373,341 +380,4 @@ catBuff EQU #6000 ;$ + (-$&0x0f) ASSERT l2end < catBuff,"ERROR!!! Code leaks to catBuff" EXPORT StartLineNum EXPORT org_addr -; - -/* -; 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_N EQU 0x04 -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: CALL clear_screen - ; XOR A - ; ;OUT (0xfe),A - ; 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 - ; вычитывание каталога -.buffPointer+1: LD HL,catBuff -.markPos+2: LD BC,"aa" -.l1: LD A,(HL) - DEC A - JR Z,.n1 - ; - JP M,keys - ; - LD A,L - AND #F0 - ADD A,8 - LD L,A - LD A,(HL) - CP "B" - RES 3,L - JR NZ,.n1 - ; две спец кнопки - LD A,C ; C - текущий файл - CP "y" - JP NC,PRINT_NEXT_BUTTONS ; "::PREV::" "::NEXT::" - ; - ; basic file - CP B ; выбранный файл - LD A,collor_A - JR NZ,.s1 - ; выделение файла и копирование его в строку запуска - XOR collor_M - ;CALL choose_color - ;JR C,.s1 - ; - LD DE,filename - PUSH BC - LD BC,8 - LDIR - POP BC - RES 3,L - ; -.s1: CALL prn_txt -.s3: INC C -.n1: LD A,L - AND #F0 - LD L,A - LD DE,#10 - ADD HL,DE - JR .l1 - ; - ; - ; - ALIGN #10 -TXT_BUTTONS: -.prev: DB '<< PgDn ' -.next: DB '>> PgUp ' - ; - ; -keys: RES 5,(iy+1) -.w1: BIT 5,(iy+1) - JR Z,.w1 - LD A,(iy-0x32) - ; - CP B - JR Z,exit - CP 0x0d ; enter - JR Z,exit - CP " " ; space - JP Z,NewDisk - ; - CP #04 ; pgUp - LD DE,-384 - JR Z,.nxtPage - ; -.pgdn: CP #05 ; pgDn - LD DE,384 - JR Z,.nxtPage - ; -.left: 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 -.toMain: JP main - -; DE - +24 or -24 -.nxtPage: LD HL,(main.buffPointer) - ADD HL,DE - BIT 3,H - JR NZ,keys -.EnablePages+1: AND 0 - JR Z,keys - ; - XOR A - LD (.EnablePages),A ; A=0 - Disable Pages - LD (main.buffPointer),HL - CALL clear_screen - JR .toMain -; var_files db 0 - -exit: -memSP+1: LD SP,0 - RET - - - -PRINT_NEXT_BUTTONS: - LD HL,#5040 - LD (var_printPos),HL - LD A,collor_N - LD (keys.EnablePages),A ; A!=0 - Enable Pages - LD HL,TXT_BUTTONS.prev - CALL prn_txt - ; - LD A,collor_N - INC C - CALL prn_txt - ; - JP keys - - -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 - ; - ; - -clear_screen: XOR A - OUT (0xfe),A - LD (ZX_VARS.ATTR_P),A - LD (ZX_VARS.BORDER),A - JP BASIC_FN.x48.cls - ; - - -; A - current file -; choose_color: CP B ; выбранный файл. #C7 -; LD A,collor_A -; SCF -; RET NZ -; XOR collor_M -; RET - - -; A - COLOR -; C - char of text button -; HL - Text -prn_txt: LD (var_collor),A - LD A,C - PUSH HL - CALL printChar - LD A," " - CALL printChar - POP HL - ; -.loop: LD A,(HL) - INC HL - PUSH HL - CALL printChar - POP HL - LD A,L - AND 0x07 - JR NZ,.loop - ; - LD A,(var_printPos) - AND 0x1f - RET Z - LD A," " - PUSH HL - CALL printChar - POP HL - 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 #6000 ;$ + (-$&0x0f) - - ASSERT l2end < catBuff,"ERROR!!! Code leaks to catBuff" - EXPORT StartLineNum - EXPORT org_addr -; -*/ \ No newline at end of file +; \ No newline at end of file diff --git a/TRDOS/boot/boot.inc b/TRDOS/boot/boot.inc index 398b400..bd197d3 100644 --- a/TRDOS/boot/boot.inc +++ b/TRDOS/boot/boot.inc @@ -1,2 +1,2 @@ -StartLineNum: EQU 0x00005F30 +StartLineNum: EQU 0x00005F2E org_addr: EQU 0x00005D3B