mirror of
https://github.com/romychs/DemoN.git
synced 2025-04-18 01:52:43 +03:00
924 lines
35 KiB
NASM
924 lines
35 KiB
NASM
;[]=========================================================================[]
|
||
;[] <20>®¤¯à®£à ¬¬ë-ã⨫¨âë ¬®¨â®à -®â« ¤ç¨ª DemoN []
|
||
;[] v0.01 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 29.08.2004 []
|
||
;[] v0.02 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 20.03.2005 []
|
||
;[] v0.03 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 25.02.2006 []
|
||
;[] v0.10 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 17.05.2006 []
|
||
;[] []
|
||
;[] SaveAllRegs - á®åà ¥¨¥ § 票© ॣ¨áâ஢ëå ¯ à []
|
||
;[] RestAllRegs - ¢®áâ ®¢«¥¨¥ § 票© ॣ¨áâ஢ëå ¯ à []
|
||
;[] PrnStrColor - ¯¥ç âì áâப¨ ᨬ¢®«®¢ á âਡãâ ¬¨ []
|
||
;[] PrintReg - ¯¥ç âì ¤¢ãå¡ ©â®¢®£® ç¨á« []
|
||
;[] PrintStrAF - ¯¥ç âì § 票ï ॣ¨áâ஢®© ¯ àë AF ¨ ä« £®¢ []
|
||
;[] PrintStrReg - ¯¥ç âì § 票© ॣ¨áâ஢ëå ¯ à á ¤à¥á㥬묨 ¡ ©â ¬¨ []
|
||
;[] PrintStrWin - ¯¥ç âì ®¬¥à®¢ ¡ ®ª ¢ ®ª å []
|
||
;[] PrintSPDn - ¯¥ç âì £«ã¡¨ë á⥪ []
|
||
;[] PrintStrSp - ¯¥ç âì § 票© á⥪ []
|
||
;[] PrintDump - ¯¥ç âì ¤ ¬¯ []
|
||
;[] PrintStrDump - ¯¥ç âì áâப¨ ¤ ¬¯ []
|
||
;[] ReplSymNoPrint - § ¬¥ ¥¯¥ç âëå ᨬ¢®«®¢ ¢ áâப¥ []
|
||
;[] NumToStr16 - ä®à¬¨à®¢ ¨¥ 16-â¨à¨ç®£® ç¨á« []
|
||
;[] NumToStr8 - ä®à¬¨à®¢ ¨¥ 8-à¨ç®£® ç¨á« []
|
||
;[] ConvHexStr - ª®¢¥àâ¨à®¢ ¨¥ ç¨á« ¢ HEX-áâபã []
|
||
;[] ConvDecStr - ª®¢¥àâ¨à®¢ ¨¥ 16-¡¨â®£® ç¨á« ¢ DEC-áâபã []
|
||
;[] CursorSet - ¯à®à¨á®¢ª ªãàá®à []
|
||
;[] CursorRes - ¢®áâ ®¢«¥¨¥ íªà ¯®¤ ªãàá®à®¬ []
|
||
;[] Ld_a_bc - ç⥨¥ ¡ ©â ¨§ ¯ ¬ïâ¨ á ¯à®¢¥àª®© ¤à¥á , ¤à¥á ¢ BC []
|
||
;[] Ld_a_hl - ç⥨¥ ¡ ©â ¨§ ¯ ¬ïâ¨ á ¯à®¢¥àª®© ¤à¥á , ¤à¥á ¢ HL []
|
||
;[] Ld_hl_a - § ¯¨áì ¡ ©â ¢ ¯ ¬ïâì á ¯à®¢¥àª®© ¤à¥á , ¤à¥á ¢ HL []
|
||
;[] AdrArea - ®¯à¥¤¥«¥¨¥ ¯à¨ ¤«¥¦®á⨠¤à¥á ®¡« á⨠¯ ¬ï⨠[]
|
||
;[]=========================================================================[]
|
||
|
||
;[]=========================================================================[]
|
||
;[] ‘®åà ¥¨¥ § 票© ॣ¨áâ஢ëå ¯ à []
|
||
;[]=========================================================================[]
|
||
SaveAllRegs:
|
||
ld (Reg._HL),hl
|
||
ld (Reg._DE),de
|
||
ld (Reg._BC),bc
|
||
|
||
ld (Reg._IX),ix
|
||
ld (Reg._IY),iy
|
||
push af
|
||
pop hl
|
||
ld (Reg._AF),hl
|
||
ld a,r
|
||
ld (Reg._IR),a
|
||
ld a,i
|
||
ld (Reg._IR+1),a
|
||
|
||
exx
|
||
ex af,af'
|
||
|
||
ld (Reg._HL_),hl
|
||
ld (Reg._DE_),de
|
||
ld (Reg._BC_),bc
|
||
push af
|
||
pop hl
|
||
ld (Reg._AF_),hl
|
||
ex af,af'
|
||
exx
|
||
|
||
ld hl,WinPage ;á®åà ¥¨¥ ®¬¥à®¢ áâà ¨æ
|
||
in a,(EmmWin.P0) ;0-¥ ®ª®
|
||
ld (hl),a
|
||
inc hl
|
||
in a,(EmmWin.P1) ;1-¥ ®ª®
|
||
ld (hl),a
|
||
inc hl
|
||
in a,(EmmWin.P2) ;2-¥ ®ª®
|
||
ld (hl),a
|
||
inc hl
|
||
in a,(EmmWin.P3) ;3-¥ ®ª®
|
||
ld (hl),a
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] ‚®áâ ®¢«¥¨¥ § 票© ॣ¨áâ஢ëå ¯ à []
|
||
;[]=========================================================================[]
|
||
RestAllRegs:
|
||
ld a,(Reg._IR)
|
||
ld r,a
|
||
ld a,(Reg._IR+1)
|
||
ld i,a
|
||
ld hl,(Reg._AF)
|
||
push hl
|
||
pop af
|
||
ld hl,(Reg._HL)
|
||
ld de,(Reg._DE)
|
||
ld bc,(Reg._BC)
|
||
ld ix,(Reg._IX)
|
||
ld iy,(Reg._IY)
|
||
|
||
exx
|
||
ex af,af'
|
||
ld hl,(Reg._AF_)
|
||
push hl
|
||
pop af
|
||
ld hl,(Reg._HL_)
|
||
ld de,(Reg._DE_)
|
||
ld bc,(Reg._BC_)
|
||
ex af,af'
|
||
exx
|
||
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>¥ç âì áâப¨ ᨬ¢®«®¢ []
|
||
;[] ‚室: HL - ¤à¥á áâப¨ ᨬ¢®«®¢ []
|
||
;[] []
|
||
;[] ”®à¬ â áâப¨: 0x16, ‘⮫¡¥æ, ‘âப , ‘¨¬¢®«ë, 0x00 []
|
||
;[]=========================================================================[]
|
||
ld a,(Color.Screen) ;®á®¢®© 梥â
|
||
ld (PrnStrColor.L1+5),a
|
||
PrnStrColor:
|
||
ld a,(hl)
|
||
cp 0x16 ;ª®¤ ãáâ ®¢ª¨ ¯®§¨æ¨¨ ªãàá®à
|
||
jr nz,.L2
|
||
inc hl
|
||
ld e,(hl) ;á⮫¡¥æ
|
||
ld a,e
|
||
ld (PrtXCoord),a
|
||
inc hl
|
||
ld d,(hl) ;áâப
|
||
inc hl
|
||
ld a,(hl) ;ᨬ¢®«
|
||
.L2 cp 0x0D
|
||
jr nz,.L3
|
||
inc d
|
||
ld a,(PrtXCoord)
|
||
ld e,a
|
||
jr .L4
|
||
.L3 cp 0x17
|
||
jr nz,.L1
|
||
inc hl
|
||
ld a,(hl)
|
||
ld (PrnStrColor.L1+5),a
|
||
inc hl
|
||
ld a,(hl)
|
||
.L1 or a
|
||
ret z ;¢ë室 ¥á«¨ ª®¥æ áâப¨
|
||
push hl
|
||
push de
|
||
;¯¥ç âì ç/§ ¡¨®á ¨«¨ ¤áá?
|
||
ifdef D_PRINTCH_BIOS
|
||
ld h,0x03 ; âਡãâ
|
||
ld l,a
|
||
sub a ;¨¤¥â¨ä¨ª â®à ®ª
|
||
; ld a,(Demon.Bios_Win)
|
||
ld bc,SysSymb*256+Bios.Win_Put_Sym
|
||
rst BiosRst
|
||
else
|
||
ld b,0x03
|
||
ld c,Dss.WrChar
|
||
rst DssRst
|
||
endif
|
||
pop de
|
||
pop hl
|
||
inc e
|
||
.L4 inc hl
|
||
jr PrnStrColor
|
||
PrtXCoord db 0
|
||
;[]=========================================================================[]
|
||
;[] <20>¥ç âì ¤¢ãå¡ ©â®¢®£® ç¨á« []
|
||
;[] ‚室: DE - ª®®à¤¨ âë ¯¥ç ⨠[]
|
||
;[] HL - § 票¥ ॣ¨áâ஢®© ¯ àë []
|
||
;[]=========================================================================[]
|
||
PrintReg:
|
||
di
|
||
push hl
|
||
ld c,Bios.Lp_Set_Place ;ãáâ ®¢ª ¯®§¨æ¨¨ ¯¥ç â¨
|
||
rst BiosRst
|
||
pop hl
|
||
|
||
ld a,(DecHex) ;á¨á⥬ áç¨á«¥¨ï
|
||
or a
|
||
jr z,.Hex
|
||
|
||
ld de,.String
|
||
call ConvDecStr
|
||
jr .Print
|
||
|
||
.Hex ld a,"#"
|
||
ld (.String),a
|
||
ld c,l
|
||
ld a,h
|
||
call ConvHexStr
|
||
ld (.String+1),hl ;áâ à訩 ¡ ©â
|
||
ld a,c
|
||
call ConvHexStr
|
||
ld (.String+3),hl ;¬« ¤è¨© ¡ ©â
|
||
.Print ld hl,.String ;¯¥ç â ¥¬ ï áâப
|
||
ld bc,5*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨ áâப¨
|
||
rst BiosRst
|
||
ei
|
||
ret
|
||
|
||
.String db "#0123"
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>¥ç âì § 票ï ॣ¨áâ஢®© ¯ àë AF ¨ ä« £®¢ []
|
||
;[] ‚室: DE - ª®®à¤¨ âë ¯¥ç ⨠[]
|
||
;[] HL - § 票¥ ॣ¨áâ஢®© ¯ àë []
|
||
;[]=========================================================================[]
|
||
PrintStrAF:
|
||
ld a,h ;§ 票¥ ॣ¨áâà A
|
||
push hl
|
||
ld (.String+11),a
|
||
|
||
ld hl,.String+1 ;¤¢®¨ç®¥ § 票¥
|
||
push de
|
||
ld de,0x3031 ;"01"
|
||
ld b,8
|
||
.L1 rlca
|
||
jr c,$+5
|
||
ld (hl),d ;"0"
|
||
jr $+3
|
||
ld (hl),e ;"1"
|
||
inc hl
|
||
djnz .L1
|
||
pop de
|
||
|
||
inc b ;B=1
|
||
inc hl
|
||
inc hl
|
||
call ReplSymNoPrint
|
||
|
||
pop hl
|
||
ld a,l ;ä« £¨
|
||
push hl
|
||
ld hl,.Flags
|
||
ld b,8
|
||
res 3,a ;á¡à®á ¥¨§¢¥áâëå ä« £®¢
|
||
res 5,a
|
||
.L2 rlca
|
||
jr c,$+6
|
||
set 5,(hl) ;á¡à®è¥
|
||
jr $+4
|
||
res 5,(hl) ;ãáâ ®¢«¥
|
||
inc hl
|
||
djnz .L2
|
||
pop hl
|
||
|
||
push de
|
||
call PrintReg ;¯¥ç âì § 票ï ॣ.¯ àë
|
||
pop de
|
||
push de
|
||
ld a,6
|
||
add a,e
|
||
ld e,a
|
||
ld c,Bios.Lp_Set_Place
|
||
di
|
||
rst BiosRst
|
||
ld hl,.String
|
||
ld bc,13*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨ áâப¨
|
||
di
|
||
rst BiosRst
|
||
pop de
|
||
inc d
|
||
dec e
|
||
dec e
|
||
dec e
|
||
ld c,Bios.Lp_Set_Place
|
||
di
|
||
rst BiosRst
|
||
ld hl,.Flags
|
||
ld bc,8*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨ áâப¨
|
||
di
|
||
rst BiosRst
|
||
ei
|
||
ret
|
||
|
||
.String db '%01010101 " "'
|
||
.Flags db "SZ.H.PNC"
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>¥ç âì § 票© ॣ¨áâ஢ëå ¯ à á ¤à¥á㥬묨 ¡ ©â ¬¨ []
|
||
;[] ‚室: DE - ª®®à¤¨ âë ¯¥ç ⨠[]
|
||
;[] HL - § 票¥ ॣ¨áâ஢®© ¯ àë []
|
||
;[]=========================================================================[]
|
||
PrintStrReg:
|
||
push hl
|
||
ld b,h
|
||
ld c,l
|
||
|
||
call Ld_a_bc ;ld a,(bc) ¤à¥áã¥¬ë¥ ¡ ©âë
|
||
ld (.String+10),a
|
||
call ConvHexStr
|
||
ld (.String),hl
|
||
inc bc
|
||
call Ld_a_bc ;ld a,(bc)
|
||
ld (.String+11),a
|
||
call ConvHexStr
|
||
ld (.String+2),hl
|
||
inc bc
|
||
call Ld_a_bc ;ld a,(bc)
|
||
ld (.String+12),a
|
||
call ConvHexStr
|
||
ld (.String+5),hl
|
||
inc bc
|
||
call Ld_a_bc ;ld a,(bc)
|
||
ld (.String+13),a
|
||
call ConvHexStr
|
||
ld (.String+7),hl
|
||
|
||
ld hl,.String+10 ;§ ¬¥ ¥¯¥ç âëå ᨬ¢®«®¢
|
||
ld b,4
|
||
call ReplSymNoPrint
|
||
|
||
pop hl
|
||
push de
|
||
call PrintReg ;¯¥ç âì § 票ï ॣ.¯ àë
|
||
pop de
|
||
di
|
||
ld a,6
|
||
add a,e
|
||
ld e,a
|
||
ld c,Bios.Lp_Set_Place ;ãáâ ®¢ª ¯®§¨æ¨¨ ¯¥ç â¨
|
||
rst BiosRst
|
||
ld hl,.String ;¯¥ç â ¥¬ ï áâப
|
||
ld bc,14*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨ áâப¨
|
||
rst BiosRst
|
||
ei
|
||
ret
|
||
|
||
.String db "0123 4567 ABCD"
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>¥ç âì ®¬¥à®¢ ¡ ®ª ¢ ®ª å []
|
||
;[] ‚室: HL - ¤à¥á á®åà ¥ëå ®¬¥à®¢ []
|
||
;[]=========================================================================[]
|
||
PrintStrWin:
|
||
ld hl,WinPage ;¢ë¢®¤ ®¬¥à®¢ ¡ ®ª ¢ ®ª å
|
||
ld de,.String+3
|
||
ld b,4
|
||
.L1 push bc
|
||
ld a,(hl)
|
||
inc hl
|
||
push hl
|
||
ld l,a
|
||
ld h,0
|
||
call NumToStr8 ;ª®¢¥àâ¨à®¢ ¨¥ ¢ HEX-áâபã
|
||
inc de
|
||
inc de
|
||
inc de
|
||
pop hl
|
||
pop bc
|
||
djnz .L1
|
||
|
||
ld hl,.String
|
||
jp PrnStrColor-6
|
||
|
||
.String db 0x16,0x02,0x12,"#01"
|
||
db 0x16,0x08,0x12,"#02"
|
||
db 0x16,0x0E,0x12,"#03"
|
||
db 0x16,0x14,0x12,"#04",0
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>¥ç âì £«ã¡¨ë á⥪ []
|
||
;[]=========================================================================[]
|
||
PrintSPDn:
|
||
ld a,(StackDown)
|
||
ld l,a
|
||
ld a,0x7F
|
||
cp l ;®âà¨æ ⥫쮥?
|
||
jr nc,.L1
|
||
res 7,l ;á¡à®á¨âì ¬¨ãá
|
||
inc a
|
||
sub l
|
||
ld l,a
|
||
.L1 ld h,0
|
||
ld de,.String+1
|
||
push de
|
||
call ConvDecStr8
|
||
pop hl
|
||
dec hl
|
||
ld bc,3*256+"0"
|
||
ld (hl),c
|
||
ld a,(hl) ;£ 襨¥ ¥§ ç é¨å ã«¥©
|
||
cp c
|
||
jr nz,$+8
|
||
ld a,0x20
|
||
ld (hl),a
|
||
inc hl
|
||
djnz $-8
|
||
ld a,(StackDown)
|
||
bit 7,a
|
||
jr z,$+6
|
||
dec hl ;®âà¨æ ⥫쮥 ç¨á«®
|
||
ld a,"-"
|
||
ld (hl),a
|
||
|
||
ld de,0x140A
|
||
ld c,Bios.Lp_Set_Place ;ãáâ ®¢ª ¯®§¨æ¨¨ ¯¥ç â¨
|
||
di
|
||
rst BiosRst
|
||
ld hl,.String ;¯¥ç â ¥¬ ï áâப
|
||
ld bc,4*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨ áâப¨
|
||
di
|
||
rst BiosRst
|
||
ei
|
||
ret
|
||
|
||
.String ds 4
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>¥ç âì § 票© á⥪ []
|
||
;[]=========================================================================[]
|
||
PrintStrSP:
|
||
ld a,(.StrSp) ;áâப á ¢¥à訮© á⥪
|
||
inc a
|
||
jr z,.L4 ;¥á«¨ ¢¥àè¨ á⥪ ¥ ¯®¯ ¤ ¥â ¢ ¤ ¬¯
|
||
ld hl,(Reg._SP)
|
||
dec hl
|
||
dec hl
|
||
inc hl
|
||
inc hl
|
||
dec a
|
||
jr nz,$-3
|
||
ld (StackDump),hl
|
||
|
||
.L4 ld hl,(StackDump) ; ç «® ¤ ¬¯
|
||
ld de,#1601 ;ª®®à¤¨ âë ¯¥ç â¨
|
||
ld a,-1
|
||
ld (.StrSp),a
|
||
|
||
ld b,8 ;ª®«-¢® áâப ¤ ¬¯
|
||
.L3 push bc
|
||
push de ;ª®®à¤¨ âë
|
||
push hl
|
||
or a ;á¡à®á ä« £ C
|
||
ld a,b
|
||
ld bc,(Reg._SP) ; ¤à¥á ¢¥àè¨ë á⥪
|
||
sbc hl,bc
|
||
jr nz,.L2
|
||
ld b,a
|
||
ld a,8
|
||
sub b
|
||
ld (.StrSp),a ;®¬¥à áâப¨ ¢ ¤ ¬¯¥ á ¢¥à訮© á⥪
|
||
ld a,(Color._SP) ;梥⠢¥àè¨ë á⥪
|
||
jr .L2+3
|
||
.L2 ld a,(Color.Screen) ;®á®¢®© 梥â
|
||
ld (.L1+1),a ;§ ¯¨á «¨ 梥â
|
||
ld c,Bios.Lp_Set_Place ;ãáâ ®¢ª ¯®§¨æ¨¨ ¯¥ç â¨
|
||
di
|
||
rst BiosRst
|
||
.L1 ld e,0 ;梥⠯®¤á¢¥âª¨
|
||
ld bc,11*256+Bios.Lp_Print_Atr ;¢ ॣ.B ¤«¨ áâப¨
|
||
rst BiosRst
|
||
pop hl
|
||
pop de
|
||
push de
|
||
push hl
|
||
call PrintReg ;¯¥ç âì ¤à¥á
|
||
pop hl
|
||
pop de
|
||
push de
|
||
dec hl
|
||
dec hl
|
||
push hl
|
||
ld a,6
|
||
add a,e
|
||
ld e,a
|
||
|
||
inc hl
|
||
inc hl
|
||
call Ld_a_hl
|
||
ld c,a
|
||
inc hl
|
||
call Ld_a_hl
|
||
ld l,a
|
||
ld h,c
|
||
|
||
call PrintReg ;¯¥ç âì § 票ï á⥪
|
||
pop hl
|
||
pop de
|
||
inc d
|
||
pop bc
|
||
djnz .L3
|
||
ei
|
||
ret
|
||
|
||
.StrSp db 6
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>¥ç âì ¤ ¬¯ []
|
||
;[]=========================================================================[]
|
||
PrintDump:
|
||
ld de,0x160E ;ª®®à¤¨ âë
|
||
ld hl,(Dump1)
|
||
ld b,8 ;ª®«¨ç¥á⢮ áâப
|
||
push de
|
||
push bc
|
||
push hl
|
||
call PrintStrDump
|
||
pop hl
|
||
ld bc,16
|
||
add hl,bc
|
||
pop bc
|
||
pop de
|
||
inc d ;á«¥¤ãîé ï áâப
|
||
djnz $-14
|
||
ret
|
||
|
||
ld hl,Dump ;¢ë¢®¤ ¤ ¬¯
|
||
; ld de,0x160E ;ª®®à¤¨ âë
|
||
ld b,8 ;ª®«¨ç¥á⢮ áâப
|
||
push de
|
||
push bc
|
||
ld c,(hl) ;¬« ¤è¨© ¡ ©â ¤à¥á
|
||
inc hl
|
||
push hl
|
||
ld h,(hl) ;áâ à訩 ¡ ©â ¤à¥á
|
||
ld l,c
|
||
call PrintStrDump
|
||
pop hl
|
||
inc hl
|
||
pop bc
|
||
pop de
|
||
inc d ;á«¥¤ãîé ï áâப
|
||
djnz $-15
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>¥ç âì áâப¨ ¤ ¬¯ []
|
||
;[] ‚室: DE - ª®®à¤¨ âë ¯¥ç ⨠[]
|
||
;[] HL - ¤à¥á ç « áâப¨ []
|
||
;[]=========================================================================[]
|
||
PrintStrDump:
|
||
push de
|
||
push hl
|
||
|
||
ld b,h
|
||
ld c,l
|
||
ld de,.String
|
||
ld ix,.String+41
|
||
push ix
|
||
|
||
ld a,8
|
||
.L1 exa
|
||
call Ld_a_bc ;ld a,(bc)
|
||
ld (ix),a
|
||
inc ix
|
||
call ConvHexStr
|
||
ex de,hl
|
||
ld (hl),e
|
||
inc hl
|
||
ld (hl),d
|
||
inc hl
|
||
ex de,hl
|
||
inc bc
|
||
call Ld_a_bc ;ld a,(bc)
|
||
ld (ix),a
|
||
inc ix
|
||
call ConvHexStr
|
||
ex de,hl
|
||
ld (hl),e
|
||
inc hl
|
||
ld (hl),d
|
||
inc hl
|
||
inc hl
|
||
ex de,hl
|
||
inc bc
|
||
exa
|
||
dec a
|
||
jr nz,.L1
|
||
|
||
ld b,16
|
||
pop hl
|
||
call ReplSymNoPrint ;§ ¬¥ ¥¯¥ç âëå ᨬ¢®«®¢
|
||
|
||
pop hl
|
||
pop de
|
||
push de
|
||
call PrintReg ;¯¥ç âì ¤à¥á áâப¨
|
||
pop de
|
||
di
|
||
ld a,7
|
||
add a,e
|
||
ld e,a
|
||
ld c,Bios.Lp_Set_Place ;ãáâ ®¢ª ¯®§¨æ¨¨ ¯¥ç â¨
|
||
rst BiosRst
|
||
ld hl,.String
|
||
ld bc,57*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨ áâப¨
|
||
rst BiosRst
|
||
ei
|
||
ret
|
||
|
||
.String db "1000 2000 3000 4000 5000 6000 7000 8000 "
|
||
db "0123456789ABCDEF"
|
||
|
||
;[]=========================================================================[]
|
||
;[] ‡ ¬¥ ¥¯¥ç âëå ᨬ¢®«®¢ ¢ áâப¥ []
|
||
;[] ‚室: B - ¤«¨ áâப¨ []
|
||
;[] HL - ¤à¥á ç « áâப¨ []
|
||
;[]=========================================================================[]
|
||
ReplSymNoPrint:
|
||
ld a,(SymbolNoPrint)
|
||
ld c,a
|
||
.L1 ld a,(hl)
|
||
cp 127
|
||
jr z,$+10
|
||
cp 0xFF
|
||
jr z,$+6
|
||
cp " "
|
||
jr nc,$+3
|
||
ld (hl),c
|
||
inc hl
|
||
djnz .L1
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] ”®à¬¨à®¢ ¨¥ 16-⨡¨â®£® ç¨á« []
|
||
;[] ‚室: DE - ¤à¥á ¡ãä¥à []
|
||
;[] HL - ç¨á«® []
|
||
;[]=========================================================================[]
|
||
NumToStr16:
|
||
ld a,(DecHex) ;á¨á⥬ áç¨á«¥¨ï
|
||
or a
|
||
jp nz,ConvDecStr
|
||
|
||
ld a,"#"
|
||
ld (de),a
|
||
inc de
|
||
ld c,l
|
||
ld a,h
|
||
call ConvHexStr
|
||
ex de,hl
|
||
ld (hl),e ;áâ à訩 ¡ ©â
|
||
inc hl
|
||
ld (hl),d
|
||
inc hl
|
||
ex de,hl
|
||
ld a,c
|
||
call ConvHexStr
|
||
ex de,hl
|
||
ld (hl),e ;¬« ¤è¨© ¡ ©â
|
||
inc hl
|
||
ld (hl),d
|
||
inc hl
|
||
ex de,hl
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] ”®à¬¨à®¢ ¨¥ 8-¡¨â®£® ç¨á« []
|
||
;[] ‚室: DE - ¤à¥á ¡ãä¥à []
|
||
;[] HL - ç¨á«® []
|
||
;[]=========================================================================[]
|
||
NumToStr8:
|
||
ld a,(DecHex) ;á¨á⥬ áç¨á«¥¨ï
|
||
or a
|
||
jp nz,ConvDecStr8
|
||
|
||
.Hex ld a,"#"
|
||
ld (de),a
|
||
inc de
|
||
ld a,l
|
||
call ConvHexStr
|
||
ex de,hl
|
||
ld (hl),e
|
||
inc hl
|
||
ld (hl),d
|
||
inc hl
|
||
ex de,hl
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] Š®¢¥àâ¨à®¢ ¨¥ ç¨á« ¢ HEX-áâபã []
|
||
;[] ‚室: A - ç¨á«® []
|
||
;[] ‚ë室: HL - HEX-áâப []
|
||
;[]=========================================================================[]
|
||
ConvHexStr:
|
||
push af
|
||
rrca
|
||
rrca
|
||
rrca
|
||
rrca
|
||
and 0x0F
|
||
add a,0x30
|
||
cp 0x3A
|
||
jr c,$+4
|
||
add a,7
|
||
|
||
ld l,a
|
||
pop af
|
||
and 0x0F
|
||
add a,0x30
|
||
cp 0x3A
|
||
jr c,$+4
|
||
add a,7
|
||
ld h,a
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] Š®¢¥àâ¨à®¢ ¨¥ 16-¡¨â®£® ç¨á« ¢ DEC-áâபã []
|
||
;[] ‚室: HL - ç¨á«® []
|
||
;[] DE - ¤à¥á ç « DEC-áâப¨ []
|
||
;[]=========================================================================[]
|
||
ConvDecStr:
|
||
ld bc,-10000
|
||
ld a,0xFF
|
||
inc a
|
||
add hl,bc
|
||
jr c,$-2
|
||
sbc hl,bc
|
||
add a,"0"
|
||
ld (de),a
|
||
inc de
|
||
|
||
ld bc,-1000
|
||
ld a,0xFF
|
||
inc a
|
||
add hl,bc
|
||
jr c,$-2
|
||
sbc hl,bc
|
||
add a,"0"
|
||
ld (de),a
|
||
inc de
|
||
ConvDecStr8:
|
||
ld bc,-100
|
||
ld a,0xFF
|
||
inc a
|
||
add hl,bc
|
||
jr c,$-2
|
||
sbc hl,bc
|
||
add a,"0"
|
||
ld (de),a
|
||
inc de
|
||
ConvDecStr8_1:
|
||
ld bc,-10
|
||
ld a,0xFF
|
||
inc a
|
||
add hl,bc
|
||
jr c,$-2
|
||
sbc hl,bc
|
||
|
||
add a,"0"
|
||
ld (de),a
|
||
inc de
|
||
|
||
ld a,l
|
||
add a,"0"
|
||
ld (de),a
|
||
inc de
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>à®à¨á®¢ª ªãàá®à []
|
||
;[] ‚室: B - ¤«¨ ªãàá®à []
|
||
;[] HL - ª®®à¤¨ âë ªãàá®à []
|
||
;[]=========================================================================[]
|
||
CursorSet:
|
||
ld (CursorRes+1),hl
|
||
ex de,hl
|
||
ld l,b ;à §¬¥à ¯® ¢¥à⨪ «¨
|
||
ld h,1 ;à §¬¥à ¯® £®à¨§®â «¨
|
||
ld (CursorRes+4),hl
|
||
ld ix,.Buffer
|
||
push de
|
||
push hl
|
||
push ix
|
||
push bc
|
||
ifdef D_PRINTCH_BIOS
|
||
xor a
|
||
ld c,Bios.Win_Copy_Win ;ª®¯¨à®¢ ¨¥ ¢ ¡ãä¥à
|
||
di
|
||
rst BiosRst
|
||
ei
|
||
else
|
||
ld a,(BankDebug)
|
||
ld b,a
|
||
ld c,Dss.WinCopy
|
||
rst DssRst
|
||
endif
|
||
|
||
pop bc ;¢ B ¤«¨ ªãàá®à
|
||
pop hl
|
||
push hl
|
||
inc hl
|
||
ld a,(hl) ;梥â ᨬ¢®«®¢
|
||
ld (CursorRes.L1+1),a
|
||
ld a,(Color.Cursor)
|
||
.L1 ld (hl),a
|
||
inc hl ;ª ¡ ©âã 梥â
|
||
inc hl
|
||
djnz .L1
|
||
|
||
pop ix
|
||
pop hl
|
||
pop de
|
||
ifdef D_PRINTCH_BIOS
|
||
xor a
|
||
ld c,Bios.Win_Restore_Win ;¢ë¢®¤ ªãàá®à íªà
|
||
di
|
||
rst BiosRst
|
||
ei
|
||
else
|
||
ld a,(BankDebug)
|
||
ld b,a
|
||
ld c,Dss.WinRest
|
||
rst DssRst
|
||
endif
|
||
ret
|
||
|
||
.Buffer ds 22*2 ;max ¤«¨ ªãàá®à
|
||
|
||
;[]=========================================================================[]
|
||
;[] ‚®áâ ®¢«¥¨¥ íªà ¯®¤ ªãàá®à®¬ []
|
||
;[]=========================================================================[]
|
||
CursorRes:
|
||
ld de,0 ;ª®®à¤¨ âë
|
||
ld hl,0 ;à §¬¥à
|
||
ld b,l ;¤«¨
|
||
push de
|
||
push hl
|
||
ld hl,CursorSet.Buffer
|
||
push hl
|
||
.L1 ld a,0 ;梥â
|
||
inc hl ;ª ¡ ©âã 梥â
|
||
jr CursorSet.L1
|
||
|
||
;[]=========================================================================[]
|
||
;[] —⥨¥ ¡ ©â ¨§ ¯ ¬ïâ¨ á ¯à®¢¥àª®© ¤à¥á []
|
||
;[] ‚室: BC ¨«¨ HL - ¤à¥á ¢ ¯ ¬ï⨠[]
|
||
;[] ‚ë室: A - áç¨â ë© ¡ ©â []
|
||
;[]=========================================================================[]
|
||
Ld_a_bc:
|
||
ld a,11000000b ;¯à®¢¥àª ¤¨ ¯ §®
|
||
and b
|
||
jr z,.L1 ;¢ 0-¬ ®ª¥
|
||
cp 10000000b ;¢® 2-®¬ ®ª¥
|
||
ld a,(bc)
|
||
ret nz ;¢®§¢à é ¥¬ ¡ ©â, ¥á«¨ ¥â
|
||
ld a,(WinPage+2) ;®¬¥à ¡ ª¨ ¯®¤ ®â« ¤ç¨ª®¬
|
||
out (EmmWin.P3),a ;¢ âà¥âì¥ ®ª® ¥¥
|
||
set 6,b ;ª®à४â¨à㥬 ¤à¥á
|
||
ld a,(bc) ;ç¨â ¥¬ ¡ ©â
|
||
res 6,b ;¢®áâ ¢«¨¢ ¥¬ ¤à¥á
|
||
jr Ld_a_hl.L1
|
||
.L1 ld a,(WinPage) ;®¬¥à ¡ ª¨ ¢ 0-¬
|
||
out (EmmWin.P3),a ;¢ âà¥âì¥ ®ª® ¥¥
|
||
set 6,b ;ª®à४â¨à㥬 ¤à¥á
|
||
set 7,b
|
||
ld a,(bc) ;ç¨â ¥¬ ¡ ©â
|
||
res 6,b ;¢®áâ ¢«¨¢ ¥¬ ¤à¥á
|
||
res 7,b
|
||
jr Ld_a_hl.L1
|
||
Ld_a_hl:
|
||
ld a,11000000b ;¯à®¢¥àª ¤¨ ¯ §®
|
||
and h
|
||
jr z,.L2 ;¢ 0-¬ ®ª¥
|
||
cp 10000000b ;¢® 2-®¬ ®ª¥
|
||
ld a,(hl)
|
||
ret nz ;¢®§¢à é ¥¬ ¡ ©â, ¥á«¨ ¥â
|
||
ld a,(WinPage+2) ;®¬¥à ¡ ª¨ ¯®¤ ®â« ¤ç¨ª®¬
|
||
out (EmmWin.P3),a ;¢ âà¥âì¥ ®ª® ¥¥
|
||
set 6,h ;ª®à४â¨à㥬 ¤à¥á
|
||
ld a,(hl) ;ç¨â ¥¬ ¡ ©â
|
||
res 6,h ;¢®áâ ¢«¨¢ ¥¬ ¤à¥á
|
||
jr .L1
|
||
.L2 ld a,(WinPage) ;®¬¥à ¡ ª¨ ¢ 0-¬ ®ª¥
|
||
out (EmmWin.P3),a ;¢ âà¥âì¥ ®ª® ¥¥
|
||
set 6,h ;ª®à४â¨à㥬 ¤à¥á
|
||
set 7,h
|
||
ld a,(hl) ;ç¨â ¥¬ ¡ ©â
|
||
res 6,h ;¢®áâ ¢«¨¢ ¥¬ ¤à¥á
|
||
res 7,h
|
||
.L1 push af
|
||
ld a,(WinPage+3) ;®¬¥à ¡ ª¨ ¨§ 3-£® ®ª
|
||
out (EmmWin.P3),a ;¢®áâ ¢«¨¢ ¥¬
|
||
pop af
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] ‡ ¯¨áì ¡ ©â ¢ ¯ ¬ïâì á ¯à®¢¥àª®© ¤à¥á []
|
||
;[] ‚室: HL - ¤à¥á ¢ ¯ ¬ï⨠[]
|
||
;[] A - § ¯¨áë¢ ¥¬ë© ¡ ©â []
|
||
;[]=========================================================================[]
|
||
Ld_hl_a:
|
||
push af
|
||
ld a,11000000b ;¯à®¢¥àª ¤¨ ¯ §®
|
||
and h
|
||
jr z,.L2 ;¢ 0-®¬ ®ª¥
|
||
cp 10000000b ;¢® 2-®¬ ®ª¥?
|
||
jr z,.L1
|
||
pop af
|
||
ld (hl),a ;§ ¯¨á «¨ ¡ ©â, ¥á«¨ ¥â
|
||
ret
|
||
.L1 ld a,(WinPage+2) ;®¬¥à ¡ ª¨ ¯®¤ ®â« ¤ç¨ª®¬
|
||
out (EmmWin.P3),a ;¢ âà¥âì¥ ®ª® ¥¥
|
||
set 6,h ;ª®à४â¨à㥬 ¤à¥á
|
||
pop af
|
||
ld (hl),a ;¯¨è¥¬ ¡ ©â
|
||
jr .L3
|
||
.L2 ld a,(WinPage) ;®¬¥à ¡ ª¨ ¢ 0-®¬
|
||
out (EmmWin.P3),a ;¢ âà¥âì¥ ®ª® ¥¥
|
||
set 6,h ;ª®à४â¨à㥬 ¤à¥á
|
||
set 7,h
|
||
pop af
|
||
ld (hl),a ;¯¨è¥¬ ¡ ©â
|
||
res 7,h ;¢®áâ ¢«¨¢ ¥¬ ¤à¥á
|
||
.L3 res 6,h
|
||
ld a,(WinPage+3) ;®¬¥à ¡ ª¨ ¨§ 3-£® ®ª
|
||
out (EmmWin.P3),a ;¢®áâ ¢«¨¢ ¥¬
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] Ž¯à¥¤¥«¥¨¥ ¯à¨ ¤«¥¦®á⨠¤à¥á ®¡« á⨠¯ ¬ï⨠[]
|
||
;[] ‚室: HL - ¨¦¨© ¤à¥á ®¡« á⨠¯ ¬ï⨠[]
|
||
;[] DE - ¢¥à娩 ¤à¥á ®¡« á⨠¯ ¬ï⨠[]
|
||
;[] BC - ¤à¥á []
|
||
;[] ‚ë室: ä« £ C - ¤à¥á ¥ ¯à¨ ¤«¥¦¨â ®¡« á⨠¯ ¬ï⨠[]
|
||
;[] ä« £ NC - ¤à¥á ¯à¨ ¤«¥¦¨â ®¡« á⨠¯ ¬ï⨠[]
|
||
;[]=========================================================================[]
|
||
AdrArea:
|
||
or a
|
||
sbc hl,bc
|
||
ret c
|
||
ex de,hl
|
||
or a
|
||
sbc hl,bc
|
||
ccf
|
||
ret
|
||
|