mirror of
https://github.com/RevCurtisP/C02.git
synced 2024-11-22 16:34:15 +00:00
89 lines
3.4 KiB
Plaintext
89 lines
3.4 KiB
Plaintext
|
; c02 Program Initialization Code for Commander X16
|
||
|
|
||
|
;PETSCII Key Mappings
|
||
|
DELKEY EQU $14 ;Delete/Backspace Key (Delete)
|
||
|
ESCKEY EQU $03 ;Escape/Stop Key (RUN/STOP)
|
||
|
RTNKEY EQU $0D ;Return/Enter Key (RETURN)
|
||
|
|
||
|
;Zero Page System Variables - Assumes Usage is Same as C64
|
||
|
XMBANK EQU $0A ;Extended Memory Bank (Load/Verify Flag)
|
||
|
XADRLO EQU $0B ;Ext Memory Address LSB (Text Index/Array Size)
|
||
|
XADRHI EQU $0C ;Ext Memory Address MSB (Array Dimension Fkags)
|
||
|
SRCPTR EQU $22 ;Source Pointer [Temporary Pointers]
|
||
|
SRCLO EQU $22 ;Source Pointer LSB [Temporary Pointers]
|
||
|
SRCHI EQU $23 ;Source Pointer MSB [Temporary Pointers]
|
||
|
DSTPTR EQU $24 ;Destination Pointer [Temporary Pointers]
|
||
|
DSTLO EQU $24 ;Destination Pointer LSB [Temporary Pointers]
|
||
|
DSTHI EQU $25 ;Destination Pointer MSB [Temporary Pointers]
|
||
|
BLKLO EQU $26 ;Block Pointer LSB [Floating Point Work Area]
|
||
|
BLKHI EQU $27 ;Block Pointer MSB [Floating Point Work Area]
|
||
|
STKLO EQU $28 ;Stack Pointer LSB [Floating Point Work Area]
|
||
|
STKHI EQU $29 ;Stack Pointer MSB [Floating Point Work Area]
|
||
|
BFRLO EQU $35 ;Buffer Pointer LSB [Temporary String Pointer]
|
||
|
BFRHI EQU $36 ;Buffer Pointer MSB [Temporary String Pointer]
|
||
|
RDSEED EQU $A2 ;Random Seed [Software Jiffy Clock (Low Byte)]
|
||
|
TEMP0 EQU $FB ;Temporary Variable [Unused Byte]
|
||
|
TEMP1 EQU $FC ;Temporary Variable [Unused Byte]
|
||
|
TEMP2 EQU $FD ;Temporary Variable [Unused Byte]
|
||
|
TEMP3 EQU $FE ;Temporary Variable [Unused Byte]
|
||
|
|
||
|
;Other Variables - Top of Extended System RAM Area
|
||
|
BLKSLO EQU $07F4 ;Block Start LSB [Unused Byte]
|
||
|
BLKSHI EQU $07F5 ;Block Start MSB [Unused Byte]
|
||
|
BLKELO EQU $07F6 ;Block End LSB [Unused Byte]
|
||
|
BLKEHI EQU $07F7 ;Block End MSB [Unused Byte]
|
||
|
BLKLEN EQU $07F8 ;Block Length [Unused Byte]
|
||
|
|
||
|
RANDOM EQU $07F9 ;Random Number Storage [Unused Byte]
|
||
|
STKSAV EQU $07FA ;Machine Stack Storage [Unused Byte]
|
||
|
|
||
|
STKSLO EQU $07FC ;Stack Start LSB [Unused Byte]
|
||
|
STKSHI EQU $07FD ;Stack Start MSB [Unused Byte]
|
||
|
STKELO EQU $07FE ;Stack End LSB [Unused Byte]
|
||
|
STKEHI EQU $07FF ;Stack End MSB [Unused Byte]
|
||
|
|
||
|
;Machine Language Basic Stub - Same as Commodore 64
|
||
|
ORG $0801 ;Start of Basic Program
|
||
|
BASIC: DC $0C, $08 ;Pointer to Next Line
|
||
|
DC $00, $00 ;Line Number (0)
|
||
|
DC $9E ;SYS
|
||
|
DC $20 ;' '
|
||
|
DC $32, $30, $36 ,$32 ;"2062"
|
||
|
DC $00 ;End of Line Marker
|
||
|
DC $00, $00 ;End of Basic Program
|
||
|
|
||
|
START: TSX ;Get Stack Pointer
|
||
|
STX STKSAV ;and Save for Exit
|
||
|
JMP MAIN ;Execute Program
|
||
|
|
||
|
EXIT: LDX STKSAV ;Retrieve Saved Stack Pointer
|
||
|
TXS ;and Restore It
|
||
|
RTS ;Return to BASIC
|
||
|
|
||
|
;Poll Keyboard for Character
|
||
|
POLKEY EQU $FFE4 ;Aliased to Kernal GETIN Routine
|
||
|
|
||
|
;Get Character from Keyboard
|
||
|
GETKEY EQU POLKEY ;Aliased to POLKEY Routine
|
||
|
|
||
|
;Wait for Character from Keyboard
|
||
|
GETCHR: JSR GETKEY ;Poll Keyboard
|
||
|
BEQ GETCHR ;If No Key, Loop
|
||
|
RTS
|
||
|
|
||
|
;Print Character to Console
|
||
|
PUTCHR EQU $FFD2 ;Aliased to CHROUT Routine
|
||
|
|
||
|
;Delete Previous Character
|
||
|
DELCHR: LDA #DELKEY ;Load Delete Character
|
||
|
JMP PUTCHR ;Print and Return
|
||
|
|
||
|
;Advance Character to Next line
|
||
|
NEWLIN: LDA #RTNKEY ;Load Return Character
|
||
|
JMP PUTCHR ;Print and Return
|
||
|
|
||
|
PUTSTR: TXA ;Copy LSB to Accumulator
|
||
|
JMP $CBD2 ;Execute STROUT
|
||
|
|
||
|
INCLUDE "../include/prbyte.a02" ;PRBYTE and PRHEX routine
|