Add STRVAL

This commit is contained in:
Rikard Nordgren committed 2025-03-19 17:04:33 +01:00
1 parent 382b382847
commit 47fa7a393c
8 files changed
+75 -21

No files matched your search

+1 -1
View File
@@ -202,7 +202,7 @@ Floating point mathematical routines - not official, but well known and broadly
| `$B391` | `GIVAYF` | PARTIAL | not fully tested yet |
| `$B3A2` | `convert_Y_to_FAC1` | DONE | |
| `$B794` | `convert_u8_A_to_FAC1` | DONE | |
| `$B7B5` | `STRVAL` | NOT DONE | imports string to FAC1 |
| `$B7B5` | `STRVAL` | PARTIAL | Only for 38k memory model |
| `$B7F7` | `convert_FAC1_to_ADDR` | NOT DONE | |
| `$B849` | `add_HALF_FAC1` | DONE | |
| `$B850` | `sub_MEM_FAC1` | DONE | |
-20
View File
@@ -1,20 +0,0 @@
;; #LAYOUT# STD * #TAKE
;; #LAYOUT# X16 BASIC_0 #TAKE-OFFSET 2000
;; #LAYOUT# * BASIC_0 #TAKE
;; #LAYOUT# * * #IGNORE
;
; Math package - imports string to FAC1 - XXX: what about spaces?
;
; Input:
; - .A needs to be loaded with string length
; - string address in $22/$23
;
; See also:
; - https://www.c64-wiki.com/wiki/Floating_point_arithmetic
;
; XXX provide implementation
STRVAL:
+STUB_IMPLEMENTATION
+53
View File
@@ -0,0 +1,53 @@
;; #LAYOUT# STD * #TAKE
;; #LAYOUT# X16 BASIC_0 #TAKE-OFFSET 2000
;; #LAYOUT# * BASIC_0 #TAKE
;; #LAYOUT# * * #IGNORE
;
; Math package - converts string to FAC1
;
; Input:
; - .A needs to be loaded with string length
; - string address in $22/$23
;
; See also:
; - https://www.c64-wiki.com/wiki/Floating_point_arithmetic
; - https://www.c64-wiki.com/wiki/STRVAL
;
!ifdef CONFIG_MEMORY_MODEL_38K {
; Only supported model for now since needs CHRGOT and FIN
STRVAL:
ldx TXTPTR ; Save TXTPTR
stx FBUFPT
ldx TXTPTR+1
stx FBUFPT+1
ldx INDEX ; Move string address into TXTPTR
stx TXTPTR
ldx INDEX+1
stx TXTPTR+1
pha ; Save string length
tay
lda (INDEX),Y
sta TEMPF1 ; Save byte after string
lda #0
sta (INDEX),Y ; NULL terminate string
jsr CHRGOT
jsr FIN
pla ; Retrieve string length
tay
lda TEMPF1
sta (INDEX),Y ; Restore byte after string
ldx FBUFPT ; Restore TXTPTR
stx TXTPTR
ldx FBUFPT+1
stx TXTPTR+1
rts
}
File renamed without changes.
+3
View File
@@ -0,0 +1,3 @@
18 60 81 00 00 00 00
CLC + RTS + Floating point number 1.0
+3
View File
@@ -0,0 +1,3 @@
JSR $B68C + JMP fragment
Call some place in ROM + jump fragment
+3
View File
@@ -0,0 +1,3 @@
STA $24 + STY $25
Store YA to well known zero page vector
+12
View File
@@ -530,5 +530,17 @@ print "COMPARE"
compare $61 $66 $1001
print "END"
print "TEST: STRVAL 200E-1"
fill $61 $66 FF FF FF FF FF CC
fill $22 $23 $00 $05
fill $500 $507 32 30 30 45 2D 31 31
r A=6
r PC=$B7B5
ret
fill $1001 $1006 88 C8 00 00 00 00
print "COMPARE"
compare $61 $61 $1001
print "END"
q