DemoN/KSTACK.ASM
2020-12-26 23:59:23 +03:00

213 lines
8.3 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;[]=========================================================================[]
;[] Ž¡à ¡®âª  ª« ¢¨ âãàë ¢ ®ª­¥ ¤ ¬¯  á⥪  []
;[] v0.10 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 18.03.2006 []
;[]=========================================================================[]
KStack:
ld a,b ;á®áâ®ï­¨¥ <Shift><Alt><Ctrl>
and 11110000b
; ld b,a
jr z,.L100
;Ž¡à ¡®âª  ª®¬¡¨­ æ¨¨ Shift + ᨬ¢®«
; and 11000000b ;<Shift>
; or a
; jr z,.L10
; ld a,d
;; cp 0x80+0x0F ;Shift+Tab
;; jp nz,Keyb+6
;; ld a,3 ;­®¬¥à ®ª­  ¤ ¬¯ 
;; ld (Keyb.WinScreen),a
; jp Keyb-3
;Ž¡à ¡®âª  ª®¬¡¨­ æ¨¨ Ctrl + ᨬ¢®«
; ld a,b
cp 00100000b ;<Ctrl>
jp nz,Keyb+6
ld a,d ;¯®§¨æ¨®­­ë© ª®¤
cp 0x80+0x2B ;<Ctrl>+<X>
jp nz,Keyb+6
ld hl,(StackDump)
ld bc,(.Coordinate)
ld a,b
ld b,0x16 ;x-ª®à¤¨­ â  1 áâப¨
sub b
rlca ;*2
ld b,0
ld c,a
or a
sbc hl,bc
ld (Reg._SP),hl
ld a,-1
ld (PrintStrSP.StrSp),a
jp Keyb-11
;Ž¡à ¡®âª  ¯®§¨æ¨®­­®£® ª®¤ 
.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,(StackDump) ; ¤à¥á 1-®© áâப¨
dec hl
dec hl
ld (StackDump),hl
ld hl,PrintStrSP.StrSp ;áâப  ¢¥àè.á⥪ 
ld a,-1
cp (hl) ;¢ ¤ ¬¯¥?
jr z,$+3
dec (hl)
jp Keyb-11
.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,(StackDump) ; ¤à¥á 1-®© áâப¨
inc hl
inc hl
ld (StackDump),hl
ld hl,PrintStrSP.StrSp ;áâப  ¢¥àè.á⥪ 
ld a,(hl)
cp 7 ;­  ¯®á«¥¤­¥© áâப¥?
jr c,$+5
ld a,-2
ld (hl),a ;¢¥àè.á⥪  ­¥ ¯®¯ ¤ ¥â ¢ ¤ ¬¯
inc (hl)
jp Keyb-11
.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
ld hl,(StackDump)
ld bc,2*7
or a
sbc hl,bc
ld (StackDump),hl
ld a,-1
ld (PrintStrSP.StrSp),a ;áâப  ¢¥àè.á⥪ 
jp Keyb-11
.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
ld hl,(StackDump)
ld bc,2*7
add hl,bc
ld (StackDump),hl
ld a,-1
ld (PrintStrSP.StrSp),a ;áâப  ¢¥àè.á⥪ 
jp Keyb-11
.L109 ld a,h ;­  ¯¥à¢ãî áâபã
ld (.Coordinate+1),a
jp Keyb-3
.L110 cp 0x57 ;<Home>
jr nz,.L200
ld a,6
ld (PrintStrSP.StrSp),a ;áâப  ¢¥àè.á⥪ 
jp Keyb-11
;.L111 cp 0x0F ;<Tab>
; jr nz,.L200
; ld a,1 ;­®¬¥à ®ª­  «¨á⨭£ 
; ld (Keyb.WinScreen),a
; jp Keyb-3
;Ž¡à ¡®âª  ASCII ª®¤®¢
.L200 ld a,0 ;ASCII ª®¤
cp 0x0D ;<Enter>
jp nz,Keyb+6
.L201 ld b,0 ;¤«¨­  áâப¨ ¢¢®¤ 
ld hl,0 ;ª®®à¤¨­ âë áâப¨ ¢¢®¤ 
call InputLine ;¢¢®¤ ç¨á« 
jp c,Keyb-3 ;§ ¢¥à襭¨¥ ¢¢®¤  ¯® <ESC>
call PutAdres
jp c,.L201 ;®è¨¡ª  ¢ ¢¥¤¥­­ëå ¤ ­­ëå
ld bc,(.Coordinate)
ld a,b
ld b,0x16 ;x-ª®à¤¨­ â  1 áâப¨
sub b
ex de,hl
ld hl,(StackDump)
ld b,a ;­®¬¥à áâப¨ 0..7
rlca ;*2
dec c
ld c,a
jr nz,.L202 ;¯¥à¥å®¤ - ¥á«¨ ¤ ­­ë¥, ¨­ ç¥  «à¥á
ld a,(PrintStrSP.StrSp) ;áâப  ¢¥àè.á⥪ 
cp b
jr z,.L203
ld b,0 ;­¥ ­  ¢¥à設¥ á⥪ 
ex de,hl ;HL - ¢¢¥¤¥­­ë©  ¤à¥á
add hl,bc
ld (StackDump),hl
ld a,-1
ld (PrintStrSP.StrSp),a
jr .L203+4
.L203 ld (Reg._SP),de ; ¤à¥á ¢¢¥¤¥­ ­  ¢¥à設¥ á⥪ 
jp Keyb-11
.L202 ld b,0 ;¢¢®¤ ¤ ­­ëå
or a
sbc hl,bc
ld a,d ;§ ¯¨áì ¤ ­­ëå ¢ ¯ ¬ïâì
call Ld_hl_a
inc hl
ld a,e
call Ld_hl_a
jp Keyb-11
.Coordinate dw 0x1601 ;ªãàá®à (áâà/ª®« ªãàá®à )
.Descript:
dw 0x161D ;¯¥à¢ ï/¯®á«¥¤­ïï áâப  ®ª­ 
db 2 ;ª®«-¢® ª®«®­®ª
db 0x01 ;N á⮫¡æ  ª®«®­ª¨
db 5 ;è¨à¨­  ª®«®­ª¨
db 0x07,5