1
0
mirror of https://github.com/RevCurtisP/C02.git synced 2024-06-08 06:29:32 +00:00
C02/include/old/py65.asm
2018-01-28 13:30:49 -05:00

81 lines
2.4 KiB
NASM

; py65mon program initialization code for c02 programs
;System Specific ASCII Key Mappings
DELKEY EQU $7F ;Delete/Backspace Key (Delete)
ESCKEY EQU $1B ;Escape/Stop Key (Escape)
RTNKEY EQU $0D ;Return/Enter Key (Carriage Return)
;Zero Page Locations
strlo EQU $30 ;String Pointer (stdio.asm)
strhi EQU $31
dstlo EQU $32 ;Source String Pointer (string.asm)
dsthi EQU $33
rdseed EQU $3E ;Pseudo-Random Seed
random EQU $3F ;Pseudo-Random Number Storage
temp0 EQU $40 ;Temporary Storage
temp1 EQU $41
temp2 EQU $42
;Memory Mapped I/O
putc EQU $F001 ;Write Character to Console
getc EQU $F004 ;Read Character from Console
ORG $0200 ;Start Directly Above Stack
start: JMP main ;Execute Program
;Poll Character from Keyboard
plkey: INC rdseed ;Cycle the Random Seed (if not provided by system)
LDA getc ;Read Character from Console
RTS
;Read Character from Console
getkey; ;Same As rdkey
;Wait for Character from Console
rdkey: JSR plkey ;Read Character from Console
BEQ rdkey ; Loop if None Received
RTS
;Delete Previous Character
delchr: LDA #$08 ;Load Backspace into Accumulator
JSR prchr ; and Print it
LDA #$20 ;Load Space into Accumulater
JSR prchr ; and Print it
LDA #$08 ;Load Backspace into Accumulator
JMP prchr ; and Print it
;Advance Character to Next line
newlin: LDA #$0D ;Load C/R into Accumulator
JSR prchr ; and Print it
LDA #$0A ;Load L/F into Accumulater
; and fall into prchr
;Print Character to Console
prchr: STA putc ;Write Character to Console
RTS
exit: BRK ;Return to Monitor
;Print Byte as Two-Digit Hex Number to Console
prbyte: PHA ;Save Accumulater
LSR ;Shift Hi Nybble to Low Nybble
LSR
LSR
LSR
JSR prhex ; and Print it
PLA ;Restore Accumulator
; and fall into prhex
;Print Low Nybble as Hex Digit to Console
prhex: AND #$0F ;Strip High Nybb
SED ;Set Decimal Flag for
CLC ; Addition Wizardry
ADC #$90 ;Convert to $90-$99,$00-$05
ADC #$40 ;Convert to $30-$39,$41-$46
CLD ;Clear Decimal Flag
JMP prchr ;Print Hex Digit and Return