A2osX/BIN/ACOS.S.RT.txt
2021-08-06 19:58:04 +02:00

369 lines
5.7 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
RT.NOT >PULLA
ora (pStack)
beq .1
lda #1
.1 dec
sta (pStack)
>PUSHA
rts
*--------------------------------------
RT.StrAdd ldx #2
jsr RT.StrPullX
jsr RT.StrPull
>PUSHW ZPStrBuf1
>PUSHW ZPStrBuf2
>SYSCALL strcat
>PUSHWZ RVALUE in buffer
clc
rts
*--------------------------------------
RT.StrCmp ldx #2
jsr RT.StrPullX
jsr RT.StrPull
>PUSHW ZPStrBuf1
>PUSHW ZPStrBuf2
>SYSCALL strcmp
>PUSHYA
clc
rts
*--------------------------------------
* on stack : Src StrID
* Y,X : Dst StrID
*--------------------------------------
RT.StrSet sty STRID
stx STRID+1
ldy #1
lda (pStack),y
ora (pStack)
beq .1
>PUSHB hStrings
ldy #2
lda (pStack),y
>PUSHA
lda (pStack),y
>PUSHA
>PUSHW ZPStrBuf1
>SYSCALL StrVGet
.1 >PUSHB hStrings
>PUSHW STRID
>PUSHW ZPStrBuf1
>SYSCALL StrVSet
inc pStack
inc pStack
rts
*--------------------------------------
RT.StrOut jsr RT.StrPull
ldy #S.PS.hStdOut
lda (pPS),y
>PUSHA
>PUSHW ZPStrBuf1
>PUSHBI 0
>SYSCALL fprintf
rts
*--------------------------------------
RT.StrPull ldx #0
RT.StrPullX >PULLW STRID
ora STRID
beq .8
lda #0
sta (ZPStrBuf1,x)
>PUSHB hStrings
>PUSHW STRID
>PUSHW ZPStrBuf1,x
>SYSCALL StrVGet
.8 rts
*--------------------------------------
RT.IntSet sty VAR.ADDR
stx VAR.ADDR+1
RT.IntUpd >PULLA
sta (VAR.ADDR)
>PULLA
ldy #1
sta (VAR.ADDR),y
rts
*--------------------------------------
RT.IntGet sty VAR.ADDR
stx VAR.ADDR+1
ldy #1
lda (VAR.ADDR),y
>PUSHA
lda (VAR.ADDR)
>PUSHA
rts
*--------------------------------------
RT.IntOut >PUSHW L.MSG.INT16
ldy #3
lda (pStack),y
>PUSHA
lda (pStack),y
>PUSHA
>PUSHBI 2
>SYSCALL PrintF
inc pStack
inc pStack
rts
*--------------------------------------
RT.DATEd ldx #0
bra RT.TIMEd.1
RT.TIMEd ldx #2
RT.TIMEd.1 >PUSHW ZPStrBuf1
>PUSHW L.FMT.DATE,x
>PUSHEA.G TimeBuf
>PUSHEA.G TimeBuf
>SYSCALL Time
>SYSCALL StrFTime
>PUSHWZ RVALUE in buffer
rts
*--------------------------------------
RT.GET jsr RT.GetChar
sta (ZPStrBuf1)
ldy #1
lda #0
sta (ZPStrBuf1),y
>PUSHWZ RVALUE in buffer
clc
rts
*--------------------------------------
RT.INPUT lda #0
sta (ZPStrBuf1)
stz ZPPtr1
ldx #0 OUT.ELW
jsr RT.OUTX
.1 jsr RT.GetChar
bcs .9
ldy ZPPtr1
cmp #C.SPACE
bcs .7
cmp #C.CR
bne .2
lda #0
sta (ZPStrBuf1),y
ldx #4 OUT.CRLF
jsr RT.OUTX
bra .8
.2 cmp #C.BS
bne .1
cpy #0
beq .1
ldx 6 OUT.BSSPBS
jsr RT.OUTX
dec ZPPtr1
bra .1
.7 cpy #255
bcs .1
sta (ZPStrBuf1),y
>SYSCALL PutChar
inc ZPPtr1
bra .1
.8 ldx #2 OUT.DLW
jsr RT.OUTX
>PUSHWZ RVALUE in buffer
clc
.9 rts
*--------------------------------------
RT.LEFTd >PULLB ZPPtr2 cnt
inc pStack
jsr RT.StrPull
ldy ZPPtr2
lda #0
sta (ZPStrBuf1),y
.8 >PUSHWZ RVALUE in buffer
clc
rts
*--------------------------------------
RT.LEN jsr RT.StrPull
ldy #$ff
.1 iny
lda (ZPStrBuf1),y
bne .1
>PUSHYA
rts
*--------------------------------------
RT.MIDd >PULLB ZPPtr2+1 len
inc pStack
>PULLB ZPPtr2 start
inc pStack
jsr RT.StrPull
ldy #0
.1 lda (ZPStrBuf1),y
beq .8
iny
cpy ZPPtr2 start
bne .1
tya
clc
adc ZPStrBuf1
sta ZPPtr1
lda ZPStrBuf1+1
adc #0
sta ZPPtr1+1
ldy #$ff
.3 iny
cpy ZPPtr2+1 len
beq .8
lda (ZPPtr1),y
sta (ZPStrBuf1),y
bne .3
.8 lda #0
sta (ZPStrBuf1),y
.80 >PUSHWZ RVALUE in buffer
clc
rts
*--------------------------------------
RT.RIGHTd >PULLB ZPPtr2 cnt
inc pStack
jsr RT.StrPull
ldy #$ff
.1 iny
lda (ZPStrBuf1),y
bne .1
tya
sec
sbc ZPPtr2
bcc .8
beq .8
clc
adc ZPStrBuf1
sta ZPPtr1
lda ZPStrBuf1+1
adc #0
sta ZPPtr1+1
ldy #$ff
.3 iny
lda (ZPPtr1),y
sta (ZPStrBuf1),y
bne .3
.8 >PUSHWZ RVALUE in buffer
clc
rts
*--------------------------------------
RT.STRd >PULLYA int
pha
>PUSHW ZPStrBuf1
>PUSHW L.MSG.INT16
pla
>PUSHYA
>PUSHBI 2
>SYSCALL sprintf
>PUSHWZ RVALUE in buffer
rts
*--------------------------------------
RT.VAL >PULLYA str
>SYSCALL atoi
>PUSHYA
rts
*--------------------------------------
RT.OUTCRLF ldx #4 CRLF
RT.OUTX ldy #S.PS.hStdOut
lda (pPS),y
>PUSHA
>PUSHW L.OUT,x
>SYSCALL FPutS
rts
*--------------------------------------
* TODO: handle lost conn CS and remap VT100 ESC codes
*--------------------------------------
RT.GetChar >SYSCALL GetChar
cmp #C.CR
bne .8
>SYSCALL GetChar LF
lda #C.CR
.8 clc
rts
*--------------------------------------
MAN
SAVE usr/src/bin/acos.s.rt
LOAD usr/src/bin/acos.s
ASM