mirror of
https://github.com/romychs/DemoN.git
synced 2025-04-18 01:52:43 +03:00
1203 lines
45 KiB
NASM
1203 lines
45 KiB
NASM
;[]=========================================================================[]
|
||
;[] Ž¡à ¡®âª ª« ¢¨ âãàë []
|
||
;[] v0.01 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 10.10.2004 []
|
||
;[] v0.02 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 27.03.2005 []
|
||
;[] v0.03 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 11.03.2006 []
|
||
;[] v0.10 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 14.05.2006 []
|
||
;[]=========================================================================[]
|
||
call CursorRes ;¢ëª« ªãàá®à
|
||
call Refresh ;®¡®¢«¥¨¥ íªà
|
||
jr Keyb
|
||
call CursorRes ;¢ëª« ªãàá®à
|
||
Keyb:
|
||
call Cursor ;¢ª« ªãàá®à
|
||
call CursorSet
|
||
ld c,Dss.ScanKey ;á®áâ®ï¨¥ ª« ¢¨ âãàë
|
||
rst DssRst
|
||
jr z,Keyb+6
|
||
ld a,b ;á®áâ®ï¨¥ <Shift><Alt><Ctrl>
|
||
and 11110000b
|
||
jr z,.L100
|
||
|
||
;Ž¡à ¡®âª ª®¬¡¨ 樨 Shift + ᨬ¢®«
|
||
and 11000000b ;<Shift>
|
||
or a
|
||
jr z,.L1
|
||
ld a,d
|
||
cp 0x80+0x0F ;Shift+Tab
|
||
jr nz,Keyb+6
|
||
ld hl,Keyb.WinScreen
|
||
ld a,(hl)
|
||
dec a
|
||
jr nz,$+4
|
||
ld a,4
|
||
ld (hl),a ;®¬¥à ®ª ¤ ¬¯
|
||
jr Keyb-3
|
||
|
||
;Ž¡à ¡®âª ª®¬¡¨ 樨 Alt + ᨬ¢®«
|
||
.L1 ld a,b
|
||
and 11110000b
|
||
cp 00010000b ;<Alt>
|
||
jr nz,.L10
|
||
ld a,d ;¯®§¨æ¨®ë© ª®¤
|
||
cp 0x80+0x2B ;<Alt>+<X>
|
||
jr nz,.L10
|
||
ret z ;¢ë室
|
||
|
||
;Ž¡à ¡®âª ª®¬¡¨ 樨 Ctrl + ᨬ¢®«
|
||
.L10 cp 00100000b ;<Ctrl>
|
||
jp nz,.L0
|
||
ld a,d ;¯®§¨æ¨®ë© ª®¤
|
||
|
||
cp 0x80+0x12 ;<Ctrl>+<E> (dEc/hEx)
|
||
jr nz,.L11
|
||
ld a,(DecHex)
|
||
cpl
|
||
ld (DecHex),a
|
||
jr Keyb-11
|
||
|
||
.L11 cp 0x80+0x13 ;<Ctrl>+<R> १¨¤¥â
|
||
jr nz,.L12
|
||
call CursorRes
|
||
ld b,5 ;¤«¨ áâப¨ ¢¢®¤
|
||
ld hl,0x1413
|
||
push hl
|
||
push bc
|
||
call CursorSet
|
||
pop bc
|
||
pop hl
|
||
call InputLine
|
||
jp c,Keyb-3
|
||
call PutAdres
|
||
jp c,Keyb-3
|
||
call KReg.Rez ;®¢ë© ¤à¥á १¨¤¥â
|
||
jr Keyb-11
|
||
|
||
.L12 cp 0x80+0x2A ;<Ctrl>+<Z>
|
||
jp z,.L202-2 ;¢ë¯®«¥¨¥ ª®¬ ¤ë
|
||
|
||
cp 0x80+0x2C ;<Ctrl>+<C>
|
||
jp z,.L200+5 ;¢ë¯®«¥¨¥ ª®¬ ¤ë
|
||
|
||
cp 0x80+0x2D ;<Ctrl>+<V>
|
||
jp z,.L203+4 ;¯à®¯ã᪠ª®¬ ¤ë
|
||
|
||
; cp 0x80+0x48 ;<ScrollLock>
|
||
; call z,ScreenS ;á®åà ¥¨¥ íªà ¢ ä ©«
|
||
|
||
.L13 ;...
|
||
jp .L0
|
||
|
||
;Ž¡à ¡®âª ASCII ª®¤®¢
|
||
.L100 ld a,e
|
||
cp 0x1B ;<Esc> - ¢ª«.á¨á⥬®£® íªà
|
||
jr nz,.L200
|
||
xor a ;¢ëª« ç ᮢ
|
||
ld (ClockOn),a
|
||
ld a,(OSScreen)
|
||
ld b,a
|
||
push bc
|
||
ld a,(OSGrafMode)
|
||
ld c,Dss.SetVMod ;á¨áâ¥¬ë© íªà
|
||
rst DssRst
|
||
pop bc
|
||
ld a,(DemonScreen)
|
||
cp b
|
||
jr nz,.NoRest
|
||
ld de,0 ;…᫨ íªà ë Ž‘ ¨ „¥¬® ᮢ¯ ¤ îâ -
|
||
ld hl,#2050 ;¢®ááâ ¢«¨¢ ¥¬ áªà¨
|
||
ld a,(BufPage)
|
||
ld b,a
|
||
ld c,Dss.WinRest
|
||
ld ix,#c000
|
||
rst DssRst
|
||
.NoRest ld c,Dss.WaitKey
|
||
rst DssRst ;¦¤¥¬ Any Key
|
||
ld a,(DemonScreen)
|
||
ld b,a
|
||
ld a,3
|
||
ld c,Dss.SetVMod
|
||
push bc
|
||
rst DssRst
|
||
pop bc
|
||
ld a,(OSScreen)
|
||
cp b
|
||
call z,RefreshScreen ;…᫨ íªà ë ᮢ¯ ¤ îâ - ¯¥à¥à¨á®¢ë¢ ¥¬
|
||
ld a,On ;¢ª« ç ᮢ
|
||
ld (ClockOn),a
|
||
jp Keyb+6
|
||
|
||
;Ž¡à ¡®âª ¯®§¨æ¨®®£® ª®¤
|
||
.L200 ld a,d
|
||
cp 0x3b ;<F1>
|
||
jr nz,.L208
|
||
call DemonHelp
|
||
; ld c,Dss.WaitKey
|
||
; rst DssRst ;¦¤¥¬ Any Key
|
||
|
||
.NoExit call RefreshScreen
|
||
jp Keyb+6
|
||
.L208 cp 0x3d
|
||
jr nz,.L207
|
||
call LoadBinDialog
|
||
jr .NoExit
|
||
.L207
|
||
cp 0x42 ;<F8>
|
||
jr nz,.L201
|
||
ld a,Off ;ä« £ ¯à®¯ã᪠¯®¤¯à®£à ¬¬
|
||
jr .L202
|
||
|
||
.L201 cp 0x41 ;<F7>
|
||
jr nz,.L203
|
||
ld a,On ;ä« £ âà áá¨à®¢ª¨ ¯®¤¯à®£à ¬¬
|
||
.L202 ld (Step.Flag),a
|
||
ld hl,PrintStrSP.StrSp
|
||
ld a,(hl) ;áâப ¢¥àè¨ë á⥪
|
||
inc a
|
||
jr nz,$+5
|
||
ld a,6 ;¢¥àãâì ¢¥àè¨ã á⥪
|
||
ld (hl),a
|
||
call Step
|
||
jp Keyb-11
|
||
|
||
.L203 cp 0x43 ;<F9>
|
||
jr nz,.L204
|
||
ld hl,(Reg._PC)
|
||
call List ;á«¥¤ãîé ï ª®¬ ¤
|
||
ld (Reg._PC),hl ;®¢ë© PC
|
||
push hl
|
||
ld a,(KList.Descript) ;ª®«¨ç¥á⢮ áâப «¨á⨣
|
||
call AdrListTabl ;¨¦¨© ¤à¥á «¨á⨣
|
||
ld de,(ListAdr) ;¢¥à娩 ¤à¥á «¨á⨣
|
||
pop bc ;®¢ë© PC
|
||
call AdrArea
|
||
jp nc,Keyb-11
|
||
ld (ListAdr),bc ;®¢ ï áâà ¨æ «¨á⨣
|
||
jp Keyb-11
|
||
|
||
.L204 cp 0x0F ;<Tab>
|
||
jr nz,.L205
|
||
ld hl,Keyb.WinScreen
|
||
ld a,(hl)
|
||
inc a
|
||
cp 5
|
||
jr nz,$+4
|
||
ld a,1
|
||
ld (hl),a ;®¬¥à ®ª ¤ ¬¯
|
||
jp Keyb-3
|
||
|
||
.L205 cp 0x48 ;<ScrollLock>
|
||
jr nz,.L206
|
||
call SaveScr ;á®åà ¥¨¥ íªà ¢ ä ©«
|
||
jp Keyb+6
|
||
|
||
.L206 cp 0x44 ;<F10>
|
||
jr nz,.L0
|
||
;¢ë室
|
||
ld ix,ExitDlg
|
||
call DialogWindow
|
||
ret
|
||
call ClearScreen
|
||
.L0 ld a,(.WinScreen) ; ªâ¨¢®¥ ®ª®
|
||
dec a
|
||
jp z,KList
|
||
dec a
|
||
jp z,KDump
|
||
dec a
|
||
jp z,KReg
|
||
jp KStack
|
||
|
||
.WinScreen db 1 ;®¬¥à ªâ¨¢®£® ®ª
|
||
;1 - ®ª® «¨á⨣
|
||
;2 - ®ª® ¤ ¬¯
|
||
;3 - ®ª® ॣ¨áâ஢
|
||
;4 - ®ª® á⥪
|
||
|
||
;<3B>à®à¨á®¢ª ªãàá®à
|
||
Cursor:
|
||
ld a,(Keyb.WinScreen) ; ªâ¨¢®¥ ®ª®
|
||
dec a
|
||
jr z,.L1
|
||
dec a
|
||
jr z,.L2
|
||
dec a
|
||
jr z,.L3
|
||
;Žª® ¤ ¬¯ á⥪
|
||
ld de,(KStack.Coordinate) ;à áç¥â ªãàá®à
|
||
ld hl,KStack.Descript+2
|
||
ld b,e
|
||
inc hl
|
||
inc hl
|
||
djnz $-2
|
||
ld a,(hl) ;¤«¨ ªãàá®à
|
||
ld (KStack.L201+1),a
|
||
ld b,a
|
||
dec hl
|
||
ld e,(hl) ;X-ª®®à¤¨ â ªãàá®à
|
||
ex de,hl
|
||
ld (KStack.L201+3),hl
|
||
ret
|
||
;Žª® «¨á⨣
|
||
.L1 ld de,(KList.Coordinate) ;à áç¥â ªãàá®à
|
||
ld hl,KList.Descript+2
|
||
ld b,e
|
||
inc hl
|
||
inc hl
|
||
djnz $-2
|
||
ld a,(hl) ;¤«¨ ªãàá®à
|
||
ld (KList.L201+1),a
|
||
ld b,a
|
||
dec hl
|
||
ld e,(hl) ;X-ª®®à¤¨ â ªãàá®à
|
||
ex de,hl
|
||
ld (KList.L201+3),hl
|
||
ret
|
||
;Žª® ¤ ¬¯
|
||
.L2 ld de,(KDump.Coordinate) ;à áç¥â ªãàá®à
|
||
ld hl,KDump.Descript+2
|
||
ld b,e
|
||
inc hl
|
||
inc hl
|
||
djnz $-2
|
||
ld a,(hl) ;¤«¨ ªãàá®à
|
||
ld (KDump.L201+1),a
|
||
ld b,a
|
||
dec hl
|
||
ld e,(hl) ;X-ª®®à¤¨ â ªãàá®à
|
||
ex de,hl
|
||
ld (KDump.L201+3),hl
|
||
ret
|
||
;Žª® ॣ¨áâ஢
|
||
.L3 call KReg.DescCalc
|
||
ld d,b
|
||
ld b,e ;ª®«®®ª ¢ áâப¥
|
||
inc hl
|
||
inc hl
|
||
djnz $-2
|
||
ld a,(hl) ;¤«¨ ªãàá®à
|
||
ld (KReg.L201+1),a
|
||
ld b,a
|
||
dec hl
|
||
ld e,(hl) ;X-ª®®à¤¨ â ªãàá®à
|
||
ex de,hl
|
||
ld (KReg.L201+3),hl
|
||
ret
|
||
|
||
;Ž¡à ¡®âª ª« ¢¨è ¢ ®ª¥ «¨á⨣
|
||
KList:
|
||
ld a,b ;á®áâ®ï¨¥ <Shift><Alt><Ctrl>
|
||
and 11110000b
|
||
jr z,.L100
|
||
|
||
;Ž¡à ¡®âª ª®¬¡¨ 樨 Alt + ᨬ¢®«
|
||
cp 00010000b ;<Alt>
|
||
jr nz,.L10
|
||
jp Keyb+6
|
||
|
||
;Ž¡à ¡®âª ª®¬¡¨ 樨 Ctrl + ᨬ¢®«
|
||
.L10 cp 00100000b ;<Ctrl>
|
||
jp nz,Keyb+6
|
||
|
||
ld a,d ;¯®§¨æ¨®ë© ª®¤
|
||
cp 0x80+0x2B ;<Ctrl>+<X>
|
||
jp nz,.L20
|
||
|
||
call AdrListTabl-3 ;¢ë¡®àª ¤à¥á «¨á⨣ ¯® N áâப¨
|
||
ld (Reg._PC),hl
|
||
jp .NewLA1+3
|
||
|
||
.L20 ld a,b
|
||
cp 00100010b ;¯à ¢ë© <Ctrl>
|
||
jr nz,.L21
|
||
ld bc,.CtrlTabl
|
||
call AdrCtrlTabl ;¢ë¡®àª áâப¨ ¢ â ¡«¨æ¥
|
||
jp nc,Keyb+6 ;¥ æ¨äà®¢ë¥ ª« ¢¨è¨
|
||
|
||
ld a,(.Coordinate+1)
|
||
ld (bc),a ;®¬¥à áâப¨ «¨á⨣
|
||
inc bc
|
||
call AdrListTabl ;¢ë¡®àª ¤à¥á «¨á⨣ ¯® N áâப¨
|
||
ld a,l
|
||
ld (bc),a
|
||
inc bc
|
||
ld a,h
|
||
ld (bc),a
|
||
jp Keyb+6
|
||
|
||
.L21 cp 00101000b ;«¥¢ë© <Ctrl>
|
||
jp nz,Keyb+6
|
||
|
||
ld a,d ;¯®§¨æ¨®ë© ª®¤
|
||
cp 0x80+0x00 ;Ctrl+"`"
|
||
jp nz,.L22
|
||
|
||
ld a,(.CtrlWin)
|
||
ld h,a
|
||
ld l,0
|
||
add a,0x40 ;á«¥¤ãî饥 ®ª®
|
||
ld (.CtrlWin),a
|
||
ld a,(.Descript+1)
|
||
ld (.Coordinate+1),a
|
||
jp .NewLA1
|
||
|
||
.L22 ld bc,.CtrlTabl
|
||
call AdrCtrlTabl ;¢ë¡®àª áâப¨ ¢ â ¡«¨æ¥
|
||
jp nc,Keyb+6
|
||
|
||
ld a,(bc) ;®¬¥à áâப¨ «¨á⨣
|
||
or a
|
||
jp z,Keyb+6 ;¥â ¤ ëå
|
||
|
||
inc bc
|
||
ld a,(bc)
|
||
ld l,a
|
||
inc bc
|
||
ld a,(bc)
|
||
ld h,a ; ¤à¥á ¨§ ¡ãä¥à
|
||
jp .NewLA
|
||
|
||
;Ž¡à ¡®âª ¯®§¨æ¨®®£® ª®¤
|
||
.L100 ld a,e ;ASCII ª®¤
|
||
ld (.L200+1),a
|
||
ld a,d ;¯®§¨æ¨®ë© ª®¤
|
||
|
||
ld de,(.Coordinate) ;⥪ã騥 ª®®à¤¨ âë ªãàá®à
|
||
cp 0x56 ;<Right>
|
||
jr nz,.L101
|
||
ld a,(.Descript+2) ;ª®«-¢® ª®«®®ª
|
||
cp e
|
||
ld a,e
|
||
jr nz,$+3
|
||
xor a
|
||
inc a
|
||
ld (.Coordinate),a ;⥪ãé ï ª®«®ª
|
||
jp Keyb-3
|
||
|
||
.L101 cp 0x54 ;<Left>
|
||
jr nz,.L102
|
||
ld a,e ;⥪ãé ï ª®«®ª
|
||
cp 1
|
||
jr nz,$+6
|
||
ld a,(.Descript+2) ;ª®«-¢® ª®«®®ª
|
||
inc a
|
||
dec a
|
||
ld (.Coordinate),a ;⥪ãé ï ª®«®ª
|
||
jp Keyb-3
|
||
|
||
.L102 ld hl,(.Descript)
|
||
cp 0x52 ;<Down>
|
||
jr nz,.L103
|
||
ld a,d ;⥪ãé ï áâப
|
||
cp l
|
||
jr nz,.L104
|
||
ld hl,(ListAdr+2) ; ¤à¥á á«¥¤ãî饩 áâப¨
|
||
jp .NewLA1
|
||
.L104 inc a
|
||
ld (.Coordinate+1),a
|
||
jp Keyb-3
|
||
|
||
.L103 cp 0x58 ;<Up>
|
||
jr nz,.L105
|
||
ld a,d ;⥪ãé ï áâப
|
||
cp h
|
||
jr nz,.L107
|
||
ld hl,(ListAdr) ; ¤à¥á ¢¥à奩 áâப¨ «¨á⨣
|
||
call UpAdres ;¯à¥¤ë¤ã騩 ¤à¥á
|
||
jp .NewLA1
|
||
.L107 dec a
|
||
ld (.Coordinate+1),a
|
||
jp Keyb-3
|
||
|
||
.L105 cp 0x53 ;<PgDown>
|
||
jr nz,.L108
|
||
ld a,d ;⥪ãé ï áâப
|
||
cp l
|
||
jr nz,.L106
|
||
call AdrListTabl
|
||
jp .NewLA1
|
||
.L106 ld a,l ; ¯®á«¥¤îî áâபã
|
||
ld (.Coordinate+1),a
|
||
jp Keyb-3
|
||
|
||
.L108 cp 0x59 ;<PgUp>
|
||
jr nz,.L110
|
||
ld a,d ;⥪ãé ï áâப
|
||
cp h
|
||
jr nz,.L109
|
||
dec l ;ª®«-¢® áâப - 1
|
||
ld b,l
|
||
ld hl,(ListAdr) ; ¤à¥á ¯¥à¢®© áâப¨
|
||
push bc
|
||
call UpAdres ;¯à¥¤ë¤ã騩 ¤à¥á
|
||
pop bc
|
||
djnz $-5
|
||
jp .NewLA1
|
||
.L109 ld a,h ; ¯¥à¢ãî áâபã
|
||
ld (.Coordinate+1),a
|
||
jp Keyb-3
|
||
|
||
.L110 cp 0x57 ;<Home>
|
||
jr nz,.L111
|
||
ld a,1
|
||
ld (.Coordinate),a ;¯¥à¢ ï ª®«®ª
|
||
jp Keyb-3
|
||
|
||
.L111 cp 0x51 ;<End>
|
||
jr nz,.L200
|
||
ld a,(.Descript+2) ;¯®á«¥¤ïï ª®«®ª
|
||
ld (.Coordinate),a ;¯¥à¢ ï ª®«®ª
|
||
jp Keyb-3
|
||
|
||
;Ž¡à ¡®âª ASCII ª®¤®¢
|
||
.L200 ld a,0
|
||
cp 0x0D ;<Enter>
|
||
jp nz,.NewPCAdr ;Keyb+6
|
||
.L201 ld b,0 ;¤«¨ áâப¨ ¢¢®¤
|
||
ld hl,0 ;ª®®à¤¨ âë áâப¨ ¢¢®¤
|
||
ld a,(.Coordinate)
|
||
dec a ;ª®«®ª ¤à¥á
|
||
jr z,.InAdres
|
||
dec a ;ª®«®ª ¬¥âª¨
|
||
jr z,$+5
|
||
dec a ;ª®«®ª ª®¤ ª®¬ ¤ë
|
||
jr z,.InCode
|
||
call InputLine
|
||
jp Keyb-3
|
||
.NewPCAdr cp "z" ;<Z>
|
||
jp nz,Keyb+6
|
||
call AdrListTabl-3 ;“áâ ®¢¨âì ®¢ë© PC
|
||
ld (Reg._PC),HL
|
||
jp Keyb-11
|
||
.InCode call InputLine ;¢¢®¤ ª®¤ ¢ 3 ª®«®ª¥
|
||
jp c,Keyb-3 ;§ ¢¥à襨¥ ¢¢®¤ ¯® <ESC>
|
||
call PutCode
|
||
jr c,.L201 ;®è¨¡ª ¢ ¢¥¤¥ëå ¤ ëå
|
||
call AdrListTabl-3 ; ¤à¥á ⥪ã饩 áâப¨
|
||
ld de,PutCode.Buffer
|
||
ld a,(de) ;§ ¯¨áì ª®¤ ¢ ¯ ¬ïâì
|
||
call Ld_hl_a
|
||
inc de
|
||
inc hl
|
||
djnz $-6
|
||
jr .NewLA1+3
|
||
|
||
.InAdres call InputLine ;¢¢®¤ ¤à¥á ¢ 1 ª®«®ª¥
|
||
jp c,Keyb-3 ;§ ¢¥à襨¥ ¢¢®¤ ¯® <ESC>
|
||
call PutAdres
|
||
jr c,.L201 ;®è¨¡ª ¢ ¢¥¤¥ëå ¤ ëå
|
||
|
||
.NewLA ld a,(.Coordinate+1)
|
||
dec a
|
||
jr z,.NewLA1
|
||
ld b,a
|
||
push bc
|
||
call UpAdres ;¯à¥¤ë¤ã騩 ¤à¥á
|
||
pop bc
|
||
djnz $-5
|
||
.NewLA1 ld (ListAdr),hl
|
||
jp Keyb-11
|
||
|
||
.CtrlWin db 0 ;®ª® ¤«ï Ctrl+"`"
|
||
.CtrlTabl ds 30 ;¡ãää¥à ¤«ï ¤à ¡ëáâà ¯¥à¥å®¤
|
||
.Coordinate dw 0x0201 ;ªãàá®à (áâà/ª®« ªãàá®à )
|
||
.Descript:
|
||
dw 0x0114 ;¯¥à¢ ï/¯®á«¥¤ïï áâப ®ª
|
||
db 4 ;ª®«-¢® ª®«®®ª
|
||
|
||
db 0x1A ;N á⮫¡æ ª®«®ª¨
|
||
db 5 ;è¨à¨ ª®«®ª¨
|
||
db 0x20
|
||
db 14
|
||
db 0x2F
|
||
db 8
|
||
db 0x38
|
||
db 22
|
||
|
||
;[]=========================================================================[]
|
||
;[] ‚롮ઠ¤à¥á «¨á⨣ ¨§ â ¡«¨æë []
|
||
;[] ‚ë室: HL - ¤à¥á «¨á⨣ ¢ ⥪ã饩 áâப¥ []
|
||
;[]=========================================================================[]
|
||
ld a,(KList.Coordinate+1) ;®¬¥à ⥪ã饩 áâப¨ «¨á⨣
|
||
AdrListTabl:
|
||
dec a
|
||
add a,a ;*2
|
||
ld e,a
|
||
ld d,0
|
||
ld hl,ListAdr ;â ¡«¨æ ¤à¥á®¢ «¨á⨣
|
||
add hl,de ;áâப ¢ â ¡«¨æ¥
|
||
ld a,(hl)
|
||
inc hl
|
||
ld h,(hl)
|
||
ld l,a ; ¤à¥á áâப¨ «¨á⨣
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] ‚롮ઠ¤à¥á æ¨ä஢ëå ª« ¢¨è ¨§ â ¡«¨æë []
|
||
;[] ‚室: D - ¯®§¨æ¨®ë© ª®¤ æ¨ä஢®© ª« ¢¨è¨ []
|
||
;[] BC - ¤à¥á ç « â ¡«¨æë []
|
||
;[] ‚ë室: BC - ¤à¥á ¢ â ¡«¨æ¥ []
|
||
;[] ”« £ NC - ¦ â ¥ æ¨ä஢ ï ª« ¢¨è []
|
||
;[]=========================================================================[]
|
||
AdrCtrlTabl:
|
||
ld a,d
|
||
and 01111111b ;á¡à®á áâ à襣® ¡¨â
|
||
dec a
|
||
dec a
|
||
cp 0x0A ;¯à®¢¥àª æ¨ä஢ëå ª« ¢¨è ¢¥à奣® àï¤
|
||
ret nc
|
||
or a
|
||
scf
|
||
ret z ;¢ë室, ¥á«¨ "0"
|
||
inc bc
|
||
inc bc
|
||
inc bc
|
||
dec a
|
||
jr nz,$-4
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>®«ã票¥ ª®¤ ¨§ áâப¨ ¢¢®¤ []
|
||
;[] ‚室: C - ¤«¨ áâப¨ ¢¢®¤ []
|
||
;[] ‚ë室: .Buffer - § å¢ ç¥ë¥ ¡ ©âë []
|
||
;[] B - ª®«¨ç¥á⢮ § å¢ ç¥ëå ¡ ©â []
|
||
;[] ä« £ C - ®è¨¡ª []
|
||
;[]=========================================================================[]
|
||
PutCode:
|
||
ld de,InputLine.Buffer
|
||
ld hl,.Buffer
|
||
ld a,c
|
||
dec a
|
||
ret c ;ã«¥¢ ï áâப
|
||
inc a
|
||
srl a
|
||
ld b,a
|
||
jr z,.L3 ;®¡à ¡®âª ®¤®£® ᨬ¢®«
|
||
ld c,a
|
||
ld a,0xC9 ;RET
|
||
jr nc,$+3
|
||
xor a ;NOP
|
||
ld (.L3-1),a
|
||
|
||
.L2 push hl
|
||
ld hl,0
|
||
ld a,2
|
||
call PutHex
|
||
ld a,l
|
||
pop hl
|
||
ret c ;¢ë室 á ®è¨¡ª®©
|
||
ld (hl),a
|
||
inc hl
|
||
dec c
|
||
jr nz,.L2
|
||
or a
|
||
ret
|
||
|
||
.L3 inc b
|
||
push hl
|
||
ld hl,0
|
||
ld a,1
|
||
call PutHex
|
||
ld a,l
|
||
pop hl
|
||
ret c ;¢ë室 á ®è¨¡ª®©
|
||
ld (hl),a
|
||
or a
|
||
ret
|
||
|
||
.Buffer ds 4
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>®«ã票¥ ¤à¥á ¨§ áâப¨ ¢¢®¤ []
|
||
;[] ‚室: C - ¤«¨ áâப¨ ¢¢®¤ []
|
||
;[] ‚ë室: HL - ç¨á«® []
|
||
;[] ä« £ C - ®è¨¡ª []
|
||
;[]=========================================================================[]
|
||
PutAdres:
|
||
ld a,c
|
||
dec a
|
||
ret c ;ã«¥¢ ï áâப
|
||
ld de,InputLine.Buffer
|
||
ld hl,0
|
||
ld a,(de)
|
||
call CapsLetter
|
||
cp "X" ;hex-ç¨á«®
|
||
jr z,$+4
|
||
cp "#" ;hex-ç¨á«®
|
||
ld a,c
|
||
jr nz,PutDec
|
||
inc de
|
||
inc de
|
||
dec a
|
||
dec a
|
||
ret c
|
||
inc a
|
||
|
||
PutHex exa
|
||
ld a,(de)
|
||
call Numeric ;æ¨äà ?
|
||
jr c,.L1
|
||
call CapsLetter ;« â.¡ãª¢ë ¢ ¢¥à娩 ॣ¨áâà
|
||
cp "F"+1
|
||
ccf
|
||
ret c ;¢ë室 á ®è¨¡ª®©
|
||
cp "A"
|
||
ret c ;¢ë室 á ®è¨¡ª®©
|
||
sub 0x07
|
||
.L1 sub 0x30
|
||
add hl,hl ;*16
|
||
add hl,hl
|
||
add hl,hl
|
||
add hl,hl
|
||
or l
|
||
ld l,a
|
||
inc de
|
||
inc de
|
||
exa
|
||
dec a
|
||
jr nz,PutHex
|
||
or a ;á¡à®á ä« £ C
|
||
ret
|
||
|
||
PutDec exa
|
||
ld a,(de)
|
||
call Numeric ;æ¨äà ?
|
||
ccf
|
||
ret c ;¢ë室 ¥á«¨ ¥â
|
||
ld c,l
|
||
ld b,h
|
||
add hl,hl ;*10
|
||
add hl,hl
|
||
add hl,bc
|
||
add hl,hl
|
||
ld b,0
|
||
sub 0x30
|
||
ld c,a
|
||
add hl,bc
|
||
inc de
|
||
inc de
|
||
exa
|
||
dec a
|
||
jr nz,PutDec
|
||
or a ;á¡à®á ä« £ C
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>஢¥àª ª®¤ ᨬ¢®« ¯à¨ ¤«¥¦®áâì ª æ¨äà ¬ (ª®¤ë 0x30...0x39) []
|
||
;[] ‚室: A - ª®¤ ᨬ¢®« []
|
||
;[] ‚ë室: ä« £ C - æ¨äà ; ”« £ NC - ¥ æ¨äà []
|
||
;[]=========================================================================[]
|
||
Numeric cp "0"
|
||
ccf
|
||
ret nc
|
||
cp 3Ah
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>¥à¥¢®¤ ᨬ¢®«®¢ « â¨áª®£® «ä ¢¨â a...z ¢ ¢¥à娩 ॣ¨áâà []
|
||
;[] ‚室: A - ª®¤ ᨬ¢®« []
|
||
;[] ‚ë室: A - ª®¤ ᨬ¢®« ¢ ¢¥à奬 ॣ¨áâॠ[]
|
||
;[]=========================================================================[]
|
||
CapsLetter cp "a" ;<"a"
|
||
ret c
|
||
cp "z"+1 ;>"z"
|
||
ret nc
|
||
and 11011111b ;¯à¥®¡à §®¢ ¨¥ ᨬ¢®«
|
||
ret
|
||
|
||
InputLine1 push hl
|
||
push bc
|
||
call CursorSet
|
||
pop bc
|
||
pop hl
|
||
jr InputLine
|
||
|
||
;[]=========================================================================[]
|
||
;[] ‚¢®¤ áâப¨ ᨬ¢®«®¢ á ª« ¢¨ âãàë []
|
||
;[] ‚室: B - ¤«¨ áâப¨ ¢¢®¤ []
|
||
;[] HL - ª®®à¤¨ âë ªãàá®à []
|
||
;[] ‚ë室: ä« £ C - <Esc> ä« £ NC - <Enter> []
|
||
;[] C - ¤«¨ ¢¢¥¤¥®© áâப¨, ¥á«¨ <Enter> []
|
||
;[]=========================================================================[]
|
||
InputLineEd:
|
||
ld a,(Color.InLineEd) ;梥â áâப¨ ¢¢®¤
|
||
ld c,a
|
||
xor a
|
||
jr InputLine+6
|
||
InputLine:
|
||
ld a,(Color.InLine) ;梥â áâப¨ ¢¢®¤
|
||
ld c,a
|
||
ld a,On
|
||
ld (.EntEnd),a
|
||
ld a,0xC3 ;ª®¤ JP
|
||
ld (.L15),a
|
||
ld (CursPos),hl
|
||
ld (.Coordinate),hl
|
||
ld hl,.Pos
|
||
xor a ;⥪ãé ï ¯®§¨æ¨ï
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),c ;梥â
|
||
inc hl
|
||
ld (hl),b ;¤«¨ áâப¨ । ªâ¨à®¢ ¨ï
|
||
inc hl ; ç «® ¡ãä¥à । ªâ¨à®¢ ¨ï
|
||
ld de,CursorSet.Buffer ;¡ãä¥à áâப¨ ¯®¤ ªãàá®à®¬
|
||
;ld c,a ;®ªà ᪠áâப¨ । ªâ¨à®¢ ¨ï
|
||
.L1 ld a,(de)
|
||
ld (hl),a
|
||
inc hl
|
||
inc de
|
||
ld (hl),c
|
||
inc hl
|
||
inc de
|
||
djnz .L1
|
||
|
||
call .PrintInLine ; ¯¥ç â âì áâபã
|
||
ld a,(.EntEnd)
|
||
or a
|
||
call nz,.EndString ;ªãàá®à ¢ ª®¥æ áâப¨
|
||
|
||
.L100 ld a,On ;¢ª«îç¨âì ¯à®£à ¬ ªãàá®à
|
||
ld (CursOnOff),a
|
||
ld hl,.L100
|
||
push hl ; ¤à¥á ¢®§¢à â
|
||
ld c,Dss.ScanKey ;á®áâ®ï¨¥ ª« ¢¨ âãàë
|
||
rst DssRst
|
||
jr z,$-3
|
||
|
||
cp 0x20 ;¥áâì ASCII-ª®¤
|
||
jr c,.L3
|
||
|
||
push af
|
||
ld a,(.Pos)
|
||
exa
|
||
ld hl,.Color ;⥪ã騩 梥â áâப¨ ¢¢®¤
|
||
ld a,(Color.InLine)
|
||
cp (hl)
|
||
call z,.ClearInLine
|
||
call z,.HomeString
|
||
call .NextPos ; ¢ë室¥ ¢ HL ¤à¥á .Pos
|
||
jr z,.L12
|
||
ld a,(CursInsOvr) ;०¨¬ Ins/Ovr
|
||
or a
|
||
jr nz,.L12 ;¯¥à¥å®¤ ¥á«¨ Ovr
|
||
ld a,(.Len)
|
||
ld e,a
|
||
dec a ;¤«¨ áâப¨ - 1
|
||
add a,a
|
||
ld b,0
|
||
ld c,a
|
||
ld d,(hl) ;¯®§¨æ¨ï ¯¥ç ⨠ᨬ¢®«
|
||
ld hl,.Buffer
|
||
add hl,bc ;ª®¥æ ¡ãä¥à
|
||
inc hl
|
||
ld a,e
|
||
sub d ;ª®«-¢® ᤢ¨£ ¥¬ëå ᨬ¢®«®¢
|
||
add a,a
|
||
ld c,a
|
||
ld d,h
|
||
ld e,l
|
||
dec hl
|
||
dec hl
|
||
lddr ;à §¤¢¨¦ª áâப¨
|
||
.L12 exa
|
||
add a,a
|
||
ld b,0
|
||
ld c,a
|
||
ld hl,.Buffer
|
||
add hl,bc ; ¤à¥á ¢ ¡ãä¥à¥
|
||
pop af
|
||
ld (hl),a ;ᨬ¢®« ¢ ¡ãä¥à
|
||
call ResCurs
|
||
.L15 jp .PrintInLine
|
||
jr .L14
|
||
|
||
.L3 cp 0x1B ;<Esc>
|
||
jr nz,.L13
|
||
call ResCurs
|
||
pop hl ;¢®áâ ®¢¨âì á⥪
|
||
scf
|
||
ret
|
||
|
||
.L13 cp 0x0D ;<Enter>
|
||
jr nz,.L2
|
||
ld a,On
|
||
ld (.EntEnd),a
|
||
call ResCurs
|
||
.L14 pop hl ;¢®áâ ®¢¨âì á⥪
|
||
call .EndPos ;¤«¨ ¢¢¥¤¥®© áâப¨
|
||
ret
|
||
|
||
.L2 ld a,d
|
||
cp 0x4F ;<Del>
|
||
jr nz,.L9
|
||
call ResCurs
|
||
ld hl,.Color ;⥪ã騩 梥â áâப¨ ¢¢®¤
|
||
ld a,(Color.InLine)
|
||
cp (hl)
|
||
call z,.ClearInLine
|
||
.L11 ld hl,.Pos
|
||
ld a,(hl) ;¯®§¨æ¨ï ªãàá®à
|
||
add a,a
|
||
ld e,a
|
||
inc hl
|
||
inc hl
|
||
ld a,(hl) ;¤«¨ áâப¨
|
||
dec a
|
||
add a,a
|
||
sub e ;¯à®¢¥àª ª®æ áâப¨
|
||
ld c,a
|
||
ld b,0
|
||
ld d,b
|
||
inc hl ; ç «® ¡ãä¥à
|
||
add hl,de ; ¤à¥á ªãàá®à
|
||
push hl
|
||
pop de
|
||
inc hl
|
||
inc hl
|
||
jr z,$+4 ;¥á«¨ ¢ ª®æ¥ áâப¨
|
||
ldir
|
||
ld a," "
|
||
ld (de),a ;¯®á«¥¤¨© ᨬ¢®«
|
||
jp .PrintInLine
|
||
|
||
.L9 cp 0x0E ;<BackSp>
|
||
jr nz,.L10
|
||
call ResCurs
|
||
call .ColorInLine ;ᬥ¨âì 梥â áâப¨
|
||
ld hl,.Pos
|
||
ld a,(hl) ;¯®§¨æ¨ï ªãàá®à
|
||
or a
|
||
jp z,.PrintInLine ;¥á«¨ ¢ ç «¥ áâப¨
|
||
dec (hl) ;㬥ìè¨âì ¯®§¨æ¨î
|
||
ld hl,CursPos
|
||
dec (hl) ;ªãàá®à ¢«¥¢®
|
||
jr .L11
|
||
|
||
.L10 cp 0x50 ;<Ins>
|
||
jr nz,.L5
|
||
ld a,(CursInsOvr)
|
||
cpl
|
||
ld (CursInsOvr),a
|
||
ret
|
||
|
||
.L5 cp 0x56 ;<Right>
|
||
jr nz,.L6
|
||
call ResCurs
|
||
call .ColorInLine ;ᬥ¨âì 梥â áâப¨
|
||
call z,.PrintInLine
|
||
call .EndPos
|
||
ret z
|
||
ld a,(.Pos)
|
||
cp c
|
||
ret nc
|
||
jp .NextPos
|
||
|
||
.L6 cp 0x54 ;<Left>
|
||
jr nz,.L7
|
||
call ResCurs
|
||
call .ColorInLine ;ᬥ¨âì 梥â áâப¨
|
||
call z,.PrintInLine
|
||
ld hl,.Pos ;¯®§¨æ¨ï ªãàá®à
|
||
ld a,(hl)
|
||
or a
|
||
ret z
|
||
dec (hl)
|
||
ld hl,CursPos ;ª®®à¤¨ âë ¯à®£à ¬ ªãàá®à
|
||
dec (hl)
|
||
ret
|
||
|
||
.L7 cp 0x57 ;<Home>
|
||
jr nz,.L8
|
||
call ResCurs
|
||
call .ColorInLine ;ᬥ¨âì 梥â áâப¨
|
||
call z,.PrintInLine
|
||
.HomeString ld hl,.Pos ;¯®§¨æ¨ï ªãàá®à
|
||
ld a,(hl)
|
||
or a
|
||
ret z
|
||
ld a,(.Coordinate) ;ª®®à¤¨ âë ç « áâப¨
|
||
ld (CursPos),a
|
||
xor a
|
||
ld (hl),a ;®¡ã«¨âì ¯®§¨æ¨î ¯¥ç â¨
|
||
ret
|
||
|
||
.L8 cp 0x51 ;<End>
|
||
ret nz
|
||
call ResCurs
|
||
call .ColorInLine ;ᬥ¨âì 梥â áâப¨
|
||
call z,.PrintInLine
|
||
.EndString call .EndPos
|
||
ret z
|
||
ld a,(.Len)
|
||
; dec a ;¤«¨ áâப¨ ¢¢®¤ - 1
|
||
sub c ;§ ¯®«¥ ¯®«®áâìî?
|
||
jr nz,$+3
|
||
dec c
|
||
ld hl,.Pos
|
||
ld (hl),c ;¯®§¨æ¨ï ¢ ª®æ¥ áâப¨
|
||
ld a,(.Coordinate)
|
||
add a,c
|
||
ld (CursPos),a ;®¢ ï ¯®§¨æ¨ï ¯à®£à ¬ ªãàá®à
|
||
ret
|
||
|
||
.PrintInLine ld ix,.Buffer ;¡ãä¥à áâப¨
|
||
ld a,(.Len)
|
||
ld l,a
|
||
ld h,1 ;à §¬¥àë ¡ãä¥à
|
||
ld de,(.Coordinate) ;ª®®à¤¨ âë ¢ íªà ¥
|
||
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
|
||
|
||
.ClearInLine ld hl,.Len ;®ç¨á⪠áâப¨ ¢¢®¤
|
||
ld b,(hl) ;¤«¨ áâப¨ ¢¢®¤
|
||
ld a," " ;¯à®¡¥«
|
||
inc hl ; ç «® ¡ãä¥à áâப¨
|
||
ld (hl),a
|
||
inc hl
|
||
djnz $-3
|
||
xor a ;¯®§¨æ¨ï ¯¥ç â¨
|
||
ld (.Pos),a
|
||
exa
|
||
ld a,(.Coordinate)
|
||
ld (CursPos),a
|
||
jr $+10
|
||
|
||
.ColorInLine ld hl,.Color ;®ªà ᪠¢ ®á®¢®© 梥â
|
||
ld a,(Color.InLine)
|
||
cp (hl)
|
||
ret nz
|
||
ld a,(Color.InLineEd) ;梥â áâப¨ ¢¢®¤
|
||
ld (.Color),a
|
||
ld hl,.Len ;¤«¨ áâப¨ ¢¢®¤
|
||
ld b,(hl)
|
||
inc hl
|
||
inc hl
|
||
ld (hl),a
|
||
inc hl
|
||
djnz $-3
|
||
ret
|
||
|
||
.EndPos ld hl,.Buffer ;¯®¨áª ¯®§¨æ¨¨ ¯®á«¥¤. ᨬ¢®«
|
||
ld a,(.Len)
|
||
ld c,a
|
||
dec a
|
||
add a,a
|
||
ld e,a
|
||
ld d,0
|
||
add hl,de
|
||
ld a,(hl)
|
||
dec hl
|
||
dec hl
|
||
cp " " ;¨é¥¬ ª®¥æ áâப¨
|
||
ret nz
|
||
dec c
|
||
jr nz,$-7
|
||
ret
|
||
|
||
.NextPos ld hl,.Pos ;à áç¥â á«¥¤ãî饩 ¯®§¨æ¨¨
|
||
ld a,(.Len)
|
||
dec a
|
||
cp (hl)
|
||
jr nz,.L16
|
||
ld a,(.EntEnd) ;§ ª 稢 âì ¯® ENTER
|
||
inc a
|
||
ret z ;¯®á«¥¤ïï ¯®§¨æ¨ï ¢ áâப¥
|
||
ld a,0xCD ;ª®¤ CALL
|
||
ld (.L15),a
|
||
ret
|
||
.L16 inc (hl) ;㢥«¨ç¥¨¥ ¯®§¨æ¨¨
|
||
ld a,(CursPos) ;ª®®à¤¨ âë ¯à®£à ¬ ªãàá®à
|
||
inc a
|
||
ld (CursPos),a
|
||
ret
|
||
;[]=========================================================================[]
|
||
;[] Š®¯¨à®¢ ¨¥ ¨§ ¡ãä¥à áâப¨ ¢¢®¤ []
|
||
;[]=========================================================================[]
|
||
;‚室:
|
||
;DE - ¤à¥á § 票ï
|
||
;C - ¤«¨ áâப¨
|
||
|
||
.FromBuffer ld hl,.Buffer
|
||
ld b,0
|
||
.FB1 ld a,(hl)
|
||
ld (de),a
|
||
inc hl
|
||
inc hl
|
||
inc de
|
||
dec c
|
||
jr nz,.FB1
|
||
ret
|
||
;[]=========================================================================[]
|
||
;[] Š®¯¨à®¢ ¨¥ ¢ ¡ãä¥à áâப¨ ¢¢®¤ []
|
||
;[]=========================================================================[]
|
||
;‚室:
|
||
;HL - ¤à¥á áâப¨
|
||
;C - ¤«¨ áâப¨
|
||
|
||
.ToBuffer ld de,.Buffer
|
||
.TB1 ld a,(hl)
|
||
ld (de),a
|
||
inc de
|
||
inc de
|
||
inc hl
|
||
dec c
|
||
jr nz,.TB1
|
||
ret
|
||
.EntEnd db On ;ä« £ ®ª®ç ¨ï áâப¨ ENTER
|
||
.Coordinate dw 0 ; ç «® áâப¨ ¢ íªà ¥
|
||
;¯®á«¥¤®¢ ⥫ì®áâì ¯¥à¥¬¥ëå ¥ ¨§¬¥ïâì!
|
||
.Pos db 0 ;¯®§¨æ¨ï ªãàá®à ¢ áâப¥
|
||
.Color db 0 ;梥â áâப¨ ¢¢®¤
|
||
.Len db 0 ;¤«¨ áâப¨ ¢¢®¤
|
||
.Buffer ds 22*2 ;¡ãä¥à áâப¨ ¢¢®¤
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20>à®£à ¬¬®¥ ᮧ¤¨¥ ¬¨£ î饣® ªãàá®à []
|
||
;[]=========================================================================[]
|
||
|
||
;======== <20>®¤£®â®¢ª ¤®¯®«¨â¥«ì®£® § ª®£¥¥à â®à ========
|
||
PreparChar:
|
||
ld de,OrgAdr-0x100 ;¡ãä¥à ¤«ï 2kB § ª®£¥¥à â®à
|
||
ld c,Bios.Win_Get_ZG ;¯®«ãç¨âì á¨áâ. § ª®£¥¥à â®à
|
||
rst BiosRst
|
||
ld hl,OrgAdr-0x100+7*256
|
||
ld bc,0x00FF
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-2
|
||
|
||
ld de,OrgAdr-0x100 ;ãáâ.§ ª®£¥¥à â®à 0x5B
|
||
ld c,Bios.Win_Set_ZG
|
||
ld a,0x5B
|
||
rst BiosRst
|
||
|
||
ld hl,(0039h) ;ãáâ ®¢ª ¢¥ªâ®à (¤«ï ¬¨£ ¨ï ªãàá®à )
|
||
ld (Rst38.Vect+1),hl
|
||
ld hl,Rst38
|
||
ld (0039h),hl
|
||
ret
|
||
|
||
Rst38 di ;¢¥ªâ®à ªãàá®à
|
||
push iy
|
||
push ix
|
||
push hl
|
||
push de
|
||
push bc
|
||
push af
|
||
exx
|
||
exa
|
||
push hl
|
||
push de
|
||
push bc
|
||
push af
|
||
call Clock
|
||
ld a,(CursOnOff)
|
||
or a
|
||
call nz,CuttingCurs
|
||
pop af
|
||
pop bc
|
||
pop de
|
||
pop hl
|
||
exx
|
||
exa
|
||
pop af
|
||
pop bc
|
||
pop de
|
||
pop hl
|
||
pop ix
|
||
pop iy
|
||
.Vect jp 0x0000 ; ¤à¥á á¨áâ. ¢¥ªâ®à RST 38
|
||
|
||
;======== Ž¡à ¡®âª ¯à®£à ¬¬®£® ªãàá®à ========
|
||
CuttingCurs ld a,(TimerFlash) ;¯ 㧠¬¨£ ¨ï
|
||
dec a
|
||
call z,.L1
|
||
ld (TimerFlash),a
|
||
ret
|
||
|
||
.L1 ld a,(CursPutRes)
|
||
cpl
|
||
ld (CursPutRes),a
|
||
|
||
ld de,(CursPos)
|
||
ld (ResCurs.L1+1),de
|
||
or a ;ä« £ Put / Res
|
||
jr z,.L3 ;ãáâ ®¢ª ªãàá®à
|
||
;¨ ç¥ á¡à®á ªãàá®à
|
||
ld hl,(CursSymb) ;ᨬ¢®« ¨ ¥£® 梥â
|
||
sub a ;á¡à®á id ®ª
|
||
ld b,SysSymb ;á¨áâ¥¬ë© § ª®£¥¥à â®à
|
||
ld c,Bios.Win_Put_Sym ;¯®«®¦¨âì ᨬ¢®«
|
||
rst BiosRst
|
||
ld a,PauseFlash ;¯ 㧠¬¨£ ¨ï
|
||
ret
|
||
|
||
.L3 ld c,Bios.Win_Get_Sym ;¯®«ãç¨âì ᨬ¢®«
|
||
sub a ;á¡à®á id ®ª
|
||
rst BiosRst
|
||
ld (CursSymb),hl ;ᨬ¢®« ¨ ¥£® 梥â
|
||
|
||
ld de,(CursPos) ;¯®§¨æ¨ï ¯¥ç â¨
|
||
ld a,(CursInsOvr) ;ä« £ ०¨¬ Ins / Ovr
|
||
or a
|
||
jr z,.L4 ;०¨¬ ¢áâ ¢ª¨
|
||
;¨ ç¥ à¥¦¨¬ § ¬¥ë
|
||
ld a,h
|
||
rlca
|
||
rlca
|
||
rlca
|
||
rlca
|
||
ld h,a
|
||
sub a ;á¡à®á id ®ª
|
||
ld b,SysSymb ;á¨áâ¥¬ë© § ª®£¥¥à â®à
|
||
; ld l,0xDC ;ªãàá®à ०¨¬ § ¬¥ë
|
||
ld c,Bios.Win_Put_Sym ;ᨬ¢®« íªà
|
||
rst BiosRst
|
||
ld a,PauseFlash ;¯ 㧠¬¨£ ¨ï
|
||
ret
|
||
|
||
.L4 sub a ;á¡à®á id ®ª
|
||
ld b,0x5B ;¬®¤¨ä. § ª®£¥¥à â®à
|
||
ld c,Bios.Win_Put_Sym ;ᨬ¢®« íªà
|
||
rst BiosRst
|
||
ld a,PauseFlash ;¯ 㧠¬¨£ ¨ï
|
||
ret
|
||
|
||
;======== <20>à¨ã¤¨â¥«ìë© á¡à®á ªãàá®à ========
|
||
ResCurs ld a,(CursOnOff)
|
||
or a
|
||
ret z ;ªãàá®à ¥ ãáâ ®¢«¥
|
||
push hl
|
||
ld a,On
|
||
ld (CursPutRes),a
|
||
inc a
|
||
ld (CursOnOff),a
|
||
ld a,1 ;¯ 㧠¬¨£ ¨ï
|
||
ld (TimerFlash),a
|
||
.L1 ld de,0 ;¯®á«¥¤¨¥ ª®®à¤¨ âë ªãàá®à
|
||
ld hl,(CursSymb)
|
||
ld bc,0x1B00+Bios.Win_Put_Sym
|
||
sub a ;á¡à®á¨âì id ®ª
|
||
rst BiosRst
|
||
pop hl
|
||
ret
|
||
|
||
CursOnOff db Off ;ä« £ ªãàá®à 00-¢ëª«/FF-¢ª«
|
||
CursPutRes db On ;ä« £ 00-Res/FF-Put
|
||
CursInsOvr db Ins ;ä« £ 00-Ins/FF-Ovr
|
||
TimerFlash db 1 ;â ©¬¥à
|
||
CursPos dw 0 ;¯®§¨æ¨ï ªãàá®à
|
||
CursSymb dw 0 ;ᨬ¢®« ¯®¤ ªãàá®à®¬
|
||
|