mirror of
https://github.com/Tolik-Trek/ZX-SP-ROMs.git
synced 2026-06-15 09:21:45 +03:00
fixed "enter" bug in boot
This commit is contained in:
parent
ff7566be45
commit
62b5f27378
@ -16,14 +16,17 @@ org_addr EQU #5d3b
|
|||||||
|
|
||||||
bstart: DW #100 ; line number = 1
|
bstart: DW #100 ; line number = 1
|
||||||
DW l1end-l1begin ; line length
|
DW l1end-l1begin ; line length
|
||||||
l1begin: DB ZX_Token.randomize,ZX_Token.usr,#30 ; 'rand' 'usr' 0
|
l1begin: DB ZX_Token.randomize,ZX_Token.usr,"0" ; 'rand' 'usr' 0
|
||||||
DB #0e,#00,#00 : DW start : DB #00,#0d ; start address
|
DB ZX_Char.number
|
||||||
|
DB #00,#00 : DW start : DB #00 ; start address
|
||||||
|
DB ZX_Char.carriage_return
|
||||||
l1end: DW #200 ; line number = 2
|
l1end: DW #200 ; line number = 2
|
||||||
DW l2end-l2begin ; line length
|
DW l2end-l2begin ; line length
|
||||||
l2begin: DB #f9,#c0,#30 ; ':' 'rand' 'usr' 0
|
l2begin: DB ZX_Token.randomize,ZX_Token.usr,"0" ; ':' 'rand' 'usr' 0
|
||||||
DB #0e,#00,#00 : DW 15619 : DB #00 ; start address
|
DB ZX_Char.number
|
||||||
DB #3a,#ea,#3a,#f7,#22
|
DB #00,#00 : DW 15619 : DB #00 ; start address
|
||||||
filename: DB "boot ",#22,#3a ; ':' 'rem' run
|
DB ":",ZX_Token.rem,":",ZX_Token.run,'"'
|
||||||
|
filename: DB "boot ",'"',":" ; ':' 'rem' run
|
||||||
;=======================================================================
|
;=======================================================================
|
||||||
|
|
||||||
;org #5d65
|
;org #5d65
|
||||||
@ -54,7 +57,8 @@ main.PagesCounter:
|
|||||||
;
|
;
|
||||||
main: LD A,(.CurrentPage)
|
main: LD A,(.CurrentPage)
|
||||||
LD (.PagesCounter),A
|
LD (.PagesCounter),A
|
||||||
.nextLoop: LD A,collor_T
|
.nextLoop: CALL PRINT_HELP
|
||||||
|
LD A,collor_T
|
||||||
LD (var_collor),A
|
LD (var_collor),A
|
||||||
LD HL,#50CC
|
LD HL,#50CC
|
||||||
LD (var_printPos),HL
|
LD (var_printPos),HL
|
||||||
@ -123,13 +127,14 @@ PRINT_NEXT_BUTTONS:
|
|||||||
LD A,(main.PagesCounter)
|
LD A,(main.PagesCounter)
|
||||||
LD (keys.nxtPage),A
|
LD (keys.nxtPage),A
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,.noChange
|
;JR Z,.noChange
|
||||||
|
JR Z,keys
|
||||||
LD (main.PagesCounter),A
|
LD (main.PagesCounter),A
|
||||||
LD (main.buffPointer),HL
|
LD (main.buffPointer),HL
|
||||||
.noChange: PUSH AF
|
.noChange: ;PUSH AF
|
||||||
CALL PRINT_HELP
|
;CALL PRINT_HELP
|
||||||
POP AF
|
;POP AF
|
||||||
JP Z,keys
|
;JP Z,keys
|
||||||
JR keys.toMain
|
JR keys.toMain
|
||||||
|
|
||||||
PRINT_HELP: LD HL,#5040
|
PRINT_HELP: LD HL,#5040
|
||||||
@ -149,7 +154,7 @@ PRINT_HELP: LD HL,#5040
|
|||||||
;
|
;
|
||||||
DirShowDone: XOR A
|
DirShowDone: XOR A
|
||||||
LD (keys.nxtPage),A
|
LD (keys.nxtPage),A
|
||||||
CALL PRINT_HELP
|
;CALL PRINT_HELP
|
||||||
keys: RES 5,(iy+1)
|
keys: RES 5,(iy+1)
|
||||||
.w1: BIT 5,(iy+1)
|
.w1: BIT 5,(iy+1)
|
||||||
JR Z,.w1
|
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
|
memSP+1: LD SP,0
|
||||||
RET
|
RET
|
||||||
|
|
||||||
@ -373,341 +380,4 @@ catBuff EQU #6000 ;$ + (-$&0x0f)
|
|||||||
ASSERT l2end < catBuff,"ERROR!!! Code leaks to catBuff"
|
ASSERT l2end < catBuff,"ERROR!!! Code leaks to catBuff"
|
||||||
EXPORT StartLineNum
|
EXPORT StartLineNum
|
||||||
EXPORT org_addr
|
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
|
|
||||||
;
|
|
||||||
*/
|
|
||||||
@ -1,2 +1,2 @@
|
|||||||
StartLineNum: EQU 0x00005F30
|
StartLineNum: EQU 0x00005F2E
|
||||||
org_addr: EQU 0x00005D3B
|
org_addr: EQU 0x00005D3B
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user