151 lines
2.8 KiB
ArmAsm
151 lines
2.8 KiB
ArmAsm
__MAIN = $08F4
|
|
.include "dos33.inc"
|
|
|
|
; HGR Byte Inspector
|
|
; Michael Pohoreski
|
|
; Version 1 - Barebones but it works
|
|
;
|
|
; Keys:
|
|
;
|
|
; ESC to Quit, else use arrow keys to move the cursor
|
|
; <-
|
|
; ->
|
|
; Up Arrow
|
|
; Down Arrow
|
|
;
|
|
; Can resume with 910G$
|
|
|
|
GBASL = $26
|
|
GBASH = $27
|
|
val = $F0
|
|
col = $F1
|
|
row = $E2 ; used by Applesoft HGR.row
|
|
HGRPAGE = $E6 ; used by Applesoft HGR.page
|
|
|
|
CH = $24 ; text cursor column
|
|
CV = $25 ; text cursor row
|
|
|
|
HPOSN = $F411 ; A=row, Y,X=col update GBASL GBASH
|
|
VTAB = $FC22 ; A=row
|
|
HOME = $FC58
|
|
COUT = $FDED
|
|
PR_HEX = $FDD3
|
|
PRBYTE = $FDDA
|
|
|
|
KEYBOARD = $C000
|
|
KEYSTROBE = $C010
|
|
|
|
.org $8F4
|
|
HgrByteInspector:
|
|
JSR HOME
|
|
BIT $C050
|
|
BIT $C053
|
|
BIT $C057
|
|
LDA #0
|
|
STA val
|
|
STA col
|
|
STA row
|
|
STA GBASL
|
|
LDA #$20
|
|
STA GBASH
|
|
STA HGRPAGE
|
|
Cursor:
|
|
LDY #0 ; Update pointer to sceeen
|
|
LDX #0
|
|
LDA row
|
|
JSR HPOSN ; A=row, Y,X=col X->E0 Y->E1
|
|
GetKey:
|
|
LDY col
|
|
LDA (GBASL),Y
|
|
STA val
|
|
JSR XorByte
|
|
LDA KEYBOARD
|
|
BPL GetKey
|
|
STA KEYSTROBE
|
|
LDX #nKeys-1
|
|
FindKey:
|
|
CMP aKeys, X
|
|
BEQ GotKey
|
|
DEX
|
|
BPL FindKey
|
|
BadKey:
|
|
BMI Cursor
|
|
GotKey:
|
|
LDA #>GotKey
|
|
PHA
|
|
LDA Func, X
|
|
PHA
|
|
Done: RTS
|
|
MoveL: DEC col
|
|
BPL Cursor
|
|
MoveR: INC col
|
|
LDA col
|
|
CMP #40
|
|
BCS MoveL
|
|
BCC Cursor
|
|
MoveU: DEC row
|
|
BPL Cursor
|
|
MoveD: INC row
|
|
LDA row
|
|
CMP #192
|
|
BCS MoveU
|
|
BCC Cursor
|
|
|
|
aKeys:
|
|
.byte $88 ; <-
|
|
.byte $95 ; ->
|
|
.byte $8B ; Up arrow
|
|
.byte $8A ; Down arrow
|
|
.byte $9B ; Esc
|
|
eKeys:
|
|
nKeys = eKeys - aKeys ;
|
|
|
|
Func:
|
|
.byte <MoveL -1
|
|
.byte <MoveR -1
|
|
.byte <MoveU -1
|
|
.byte <MoveD -1
|
|
.byte <Done -1
|
|
|
|
TogByte:
|
|
.byte $2C ; BIT $abs
|
|
XorByte:
|
|
LDA val
|
|
LDY col
|
|
EOR #$FF
|
|
STA (GBASL),Y
|
|
Row14: LDA #0
|
|
STA CH
|
|
LDA #20 ; $14 = 20
|
|
STA CV
|
|
JSR VTAB
|
|
PrintStatus:
|
|
LDA #'X'+$80 ;X=## Y=## $=####:##
|
|
JSR COUT
|
|
LDA col
|
|
JSR PR_HEX
|
|
LDA #' '+$80
|
|
JSR COUT
|
|
LDA #'Y'+$80
|
|
JSR COUT
|
|
LDA row
|
|
JSR PR_HEX
|
|
LDA #' '+$80
|
|
JSR COUT
|
|
LDA #'$'+$80
|
|
JSR COUT
|
|
LDA GBASH
|
|
JSR PR_HEX
|
|
LDA GBASL
|
|
JSR PRBYTE
|
|
LDA #':'+$80
|
|
JSR COUT
|
|
LDA val
|
|
JSR PRBYTE
|
|
LDA val
|
|
LDY col
|
|
STA (GBASL),Y
|
|
RTS
|
|
__END:
|
|
|