mirror of
https://github.com/RevCurtisP/C02.git
synced 2024-11-22 01:31:33 +00:00
First working version of ctype.asm
This commit is contained in:
parent
1a05d5fc23
commit
91f870bd88
91
include/ctype.asm
Normal file
91
include/ctype.asm
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
; ctype.h02 assembly language subroutines
|
||||||
|
;
|
||||||
|
; All calls replace Accumulator and set Flags
|
||||||
|
; Index Registers are not Modified
|
||||||
|
; isxxxx will load $FF into Accumulator to and Set Carry if True
|
||||||
|
; and load $00 into Accumulator to and clear Carry if False
|
||||||
|
; toxxxx set Carry if character is converted, otherwise clear Carry
|
||||||
|
|
||||||
|
;Character Test Routines
|
||||||
|
isalnm: PHA
|
||||||
|
JSR isdigt ;If Char is Digit
|
||||||
|
PLA
|
||||||
|
BCS istru ; Return TRUE
|
||||||
|
;Else
|
||||||
|
isalph: JSR isupc ;If Char is Upper Case
|
||||||
|
BCS istru ; Return TRUE
|
||||||
|
;Else
|
||||||
|
islowr: JSR islwc ;If Char is Lower Case
|
||||||
|
JMP isbtf ; Return TRUE Else Return FALSE
|
||||||
|
|
||||||
|
isuppr: JSR isupc ;If Char is Uppercase
|
||||||
|
isbtf: BCS istru ; Return TRUE
|
||||||
|
BCC isfls ;Else Return FALSE
|
||||||
|
|
||||||
|
isctrl: CMP #$7F ;If Char = DEL
|
||||||
|
BEQ istru ; Return TRUE
|
||||||
|
CMP #$20 ;Else If Char < ' '
|
||||||
|
JMP isbft ; Return TRUE Else Return FALSE
|
||||||
|
|
||||||
|
isdigt: CMP #$30 ;If Char < '0'
|
||||||
|
BCC isfls ; Return FALSE
|
||||||
|
CMP #$3A ;Else If Char >= ':'
|
||||||
|
JMP isbft ; Return FALSE Else Return TRUE
|
||||||
|
|
||||||
|
ispnct: PHA
|
||||||
|
JSR isalnm ;If Char is Alphanumeric
|
||||||
|
PLA
|
||||||
|
BCS isfls ; Return FALSE
|
||||||
|
;Else
|
||||||
|
isgrph: CMP #$20 ;If Char is Space
|
||||||
|
BEQ isfls ; Return FALSE
|
||||||
|
;Else
|
||||||
|
isprnt: CMP #$80 ;If Char is High ASCII
|
||||||
|
BCS isfls ; Return FALSE
|
||||||
|
JSR isctrl ;If Char is Not Control
|
||||||
|
JMP isbft ; Return TRUE Else Return FALSE
|
||||||
|
|
||||||
|
isspce: CMP #$20 ;If Char is ' '
|
||||||
|
BEQ istru ; Return TRUE
|
||||||
|
CMP #$09 ;If Char < '\t'
|
||||||
|
BCC isfls ; Return TRUE
|
||||||
|
CMP #$0E ;Else If Char > '\r'
|
||||||
|
JMP isbft ; Return FALSE Else Return TRUE
|
||||||
|
|
||||||
|
isxdgt: JSR touppr ;Convert to Uppercase
|
||||||
|
CMP #$41 ;If Char < 'A'
|
||||||
|
BCC isdigt ; Check for Digit
|
||||||
|
CMP #$47 ;Else If Char >= 'G'
|
||||||
|
isbft: BCS isfls ; Return FALSE
|
||||||
|
;Else
|
||||||
|
istru: LDA #$FF ;Return TRUE
|
||||||
|
issec: SEC ;Set Carry
|
||||||
|
RTS ;and Return
|
||||||
|
|
||||||
|
isfls: LDA #$00 ;Return FALSE
|
||||||
|
isclc: CLC ;Clear Carry
|
||||||
|
isrts: RTS ;Return from Subroutine
|
||||||
|
|
||||||
|
;Internal Test Routines - Do Not Change Accumulator
|
||||||
|
islwc: CMP #$61 ;If Char < 'a'
|
||||||
|
BCC isrts ; Return with Carry Clear
|
||||||
|
CMP #$7B ;Else If Char >= '{'
|
||||||
|
JMP isbcs ; Return with Carry Clear Else Return with Carry Set
|
||||||
|
|
||||||
|
isupc: CMP #$41 ;If Char < 'A'
|
||||||
|
BCC isrts ; Return with Carry Clear
|
||||||
|
CMP #$5B ;Else If Char >= '['
|
||||||
|
isbcs: BCS isclc ; Return with Carry Clear
|
||||||
|
BCC issec ;Else Return with Carry Set
|
||||||
|
|
||||||
|
;Character Conversion Routines
|
||||||
|
tolowr: JSR isupc ;If Char is Not Upper Case
|
||||||
|
BCC isrts ; Return
|
||||||
|
ORA #$20 ;Else Set Bit 5
|
||||||
|
RTS ; and Return
|
||||||
|
|
||||||
|
touppr: JSR islwc ;If Char is Not Lower Case
|
||||||
|
BCC isrts ; Return
|
||||||
|
AND #$DF ;Else Clear Bit 5
|
||||||
|
RTS ; and Return
|
||||||
|
|
Loading…
Reference in New Issue
Block a user