1
0
mirror of https://github.com/RevCurtisP/C02.git synced 2024-11-18 21:07:28 +00:00
C02/include/stddef.a02

80 lines
2.1 KiB
Plaintext
Raw Normal View History

;c02 library stddef.h02 assembly language subroutines
;Requires External Zero Page Variables
;DSTLO, DSTHI, SRCLO, SRCHI
;External Variables
;TEMP0, TEMP1, TEMP2
2018-07-27 18:11:39 +00:00
;Constant Definitions
TRUE EQU $FF ;Returned for Success or Failure
FALSE EQU $00 ;by some Library Routines
;savdst() - Save Destination Pointer
SAVDST: JSR GETDST ;Load Destination Pointer
JMP SAVRXY ;Save X & Y Registers
;savdst() - Save Destination Pointer
SAVSRC: JSR GETSRC ;Load Destination Pointer
JMP SAVRXY ;Save X & Y Registers
;Save Registers
SAVREG: STA TEMP0 ;Save Accumulater
SAVRXY: STX TEMP1 ;Save X Index
STY TEMP2 ;Save Y Index
RTS
;Restore Registers
RESREG: LDA TEMP0 ;Load Accumlator
RESRXY: LDX TEMP1 ;Load X Index
LDY TEMP2 ;Load Y Index
RTS
2019-03-23 00:30:49 +00:00
;Set Destination Pointer to Source Pointer
SETDSS: JSR GETSRC ;Get Destination Pointer
JMP SETDST ;Store in Source Pointer
;Restore Destination Pointer
RESDST: JSR RESRXY ;Load Address and Drop into SETDST
;Initialize Destination Pointer
SETDST: STX DSTLO ;Store Destination Pointer
STY DSTHI
RTS
;Restore Source Pointer
RESSRC: JSR RESRXY ;Load Saved Address
JMP SETSRC ;Set Source Pointer
;Set Source Pointer to Destination Pointer
SETSRD: JSR GETDST ;Get Destination Point and fall into SETSRC
;Initialize Source Pointer and Index
SETSRC: STX SRCLO ;Store Source Pointer
STY SRCHI
LDY #$00 ;Initialize Index Into String
RTS
;Retrieve Source String Pointer
GETDST: LDX DSTLO
LDY DSTHI
RTS
;Retrieve Source String Pointer
GETSRC: LDX SRCLO
LDY SRCHI
RTS
2019-03-23 00:30:49 +00:00
;Add to Destination Address
ADDDST: LDX #DSTLO ;Set Index
BNE ADDZPW ;and Execute ADDZPW
;Add to Source Address
ADDSRC: LDX #SRCLO ;Set Index and Drop into ADDZPW
;Add to Zero Page Word
ADDZPW: CLC ;Clear Carry
ADC 0,X ;Add Argument to LSB
STA 0,X ;and Save Result
BCC ADDZPX ;If Carry
INC 1,X ; Increment MSB
ADDZPX: RTS