mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-22 16:31:07 +00:00
659 lines
11 KiB
Plaintext
659 lines
11 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
*--------------------------------------
|
||
.MA DEBUG
|
||
:1 bit $C000
|
||
bpl :1
|
||
sta $C010
|
||
.EM
|
||
*--------------------------------------
|
||
.MA DEBUGOA
|
||
bit $C061
|
||
bpl :1
|
||
>DEBUG
|
||
:1 .EQ *
|
||
.EM
|
||
*--------------------------------------
|
||
* SYSCALLs Macros
|
||
*--------------------------------------
|
||
.MA SYSCALL
|
||
ldx #SYS.]1
|
||
jsr A2osX.SYSCALL
|
||
.EM
|
||
*--------------------------------------
|
||
.MA LIBCALL
|
||
ldy ]1
|
||
ldx #]2
|
||
jsr A2osX.LIBCALL
|
||
.EM
|
||
*--------------------------------------
|
||
.MA SLEEP
|
||
jsr A2osX.SLEEP
|
||
.EM
|
||
*--------------------------------------
|
||
.MA SYSCALL2
|
||
ldx #SYS.]1
|
||
jsr A2osX.SYSCALL2
|
||
.EM
|
||
*--------------------------------------
|
||
.MA MLICALL
|
||
ldx #]1
|
||
.DO ]1=MLIALLOCIRQ
|
||
lda #2
|
||
.FIN
|
||
.DO ]1=MLIDEALLOCIRQ
|
||
lda #1
|
||
.FIN
|
||
.DO ]1=MLIATALK
|
||
lda #1
|
||
.FIN
|
||
.DO ]1=MLIREADBLOCK
|
||
lda #3
|
||
.FIN
|
||
.DO ]1=MLIWRITEBLOCK
|
||
lda #3
|
||
.FIN
|
||
.DO ]1=MLICREATE
|
||
lda #7
|
||
.FIN
|
||
.DO ]1=MLIDESTROY
|
||
lda #1
|
||
.FIN
|
||
.DO ]1=MLIRENAME
|
||
lda #2
|
||
.FIN
|
||
.DO ]1=MLISETFILEINFO
|
||
lda #7
|
||
.FIN
|
||
.DO ]1=MLIGETFILEINFO
|
||
lda #10
|
||
.FIN
|
||
.DO ]1=MLIONLINE
|
||
lda #2
|
||
.FIN
|
||
.DO ]1=MLISETPREFIX
|
||
lda #1
|
||
.FIN
|
||
.DO ]1=MLIGETPREFIX
|
||
lda #1
|
||
.FIN
|
||
.DO ]1=MLIOPEN
|
||
lda #3
|
||
.FIN
|
||
.DO ]1=MLINEWLINE
|
||
lda #3
|
||
.FIN
|
||
.DO ]1=MLIREAD
|
||
lda #4
|
||
.FIN
|
||
.DO ]1=MLIWRITE
|
||
lda #4
|
||
.FIN
|
||
.DO ]1=MLICLOSE
|
||
lda #1
|
||
.FIN
|
||
.DO ]1=MLIFLUSH
|
||
lda #1
|
||
.FIN
|
||
.DO ]1=MLISETMARK
|
||
lda #2
|
||
.FIN
|
||
.DO ]1=MLIGETMARK
|
||
lda #2
|
||
.FIN
|
||
.DO ]1=MLISETEOF
|
||
lda #2
|
||
.FIN
|
||
.DO ]1=MLIGETEOF
|
||
lda #2
|
||
.FIN
|
||
.DO ]1=MLISETBUF
|
||
lda #2
|
||
.FIN
|
||
.DO ]1=MLIGETBUF
|
||
lda #2
|
||
.FIN
|
||
|
||
.DO ]1=MLISETFILEINFOEX
|
||
lda #2
|
||
.FIN
|
||
.DO ]1=MLIGETFILEINFOEX
|
||
lda #2
|
||
.FIN
|
||
.DO ]1=MLIACL
|
||
lda #2
|
||
.FIN
|
||
|
||
jsr GP.MLICall
|
||
.EM
|
||
*--------------------------------------
|
||
* FPU Entry Point
|
||
*-------------------------------------- uint16
|
||
FPU.wMUL .EQ 0
|
||
FPU.wDIV .EQ 2
|
||
FPU.wMOD .EQ 4
|
||
FPU.wADD .EQ 6
|
||
FPU.wSUB .EQ 8
|
||
|
||
FPU.wSHL .EQ 10
|
||
FPU.wSHR .EQ 12
|
||
|
||
FPU.wL .EQ 14
|
||
FPU.wLE .EQ 16
|
||
FPU.wG .EQ 18
|
||
FPU.wGE .EQ 20
|
||
|
||
FPU.wE .EQ 22
|
||
FPU.wNE .EQ 24
|
||
|
||
FPU.wAND .EQ 26
|
||
FPU.wOR .EQ 28
|
||
FPU.wxOR .EQ 30
|
||
|
||
FPU.wLAND .EQ 32
|
||
FPU.wLOR .EQ 34
|
||
*-------------------------------------- int16
|
||
FPU.iMUL .EQ 36
|
||
FPU.iDIV .EQ 38
|
||
FPU.iMOD .EQ 40
|
||
FPU.iADD .EQ 42
|
||
FPU.iSUB .EQ 44
|
||
|
||
FPU.iSHL .EQ 46
|
||
FPU.iSHR .EQ 48
|
||
|
||
FPU.iL .EQ 50
|
||
FPU.iLE .EQ 52
|
||
FPU.iG .EQ 54
|
||
FPU.iGE .EQ 56
|
||
|
||
FPU.iE .EQ 58
|
||
FPU.iNE .EQ 60
|
||
|
||
FPU.iAND .EQ 62
|
||
FPU.iOR .EQ 64
|
||
FPU.iXOR .EQ 66
|
||
|
||
FPU.iLAND .EQ 68
|
||
FPU.iLOR .EQ 70
|
||
*-------------------------------------- uint32
|
||
FPU.uMUL .EQ 72
|
||
FPU.uDIV .EQ 74
|
||
FPU.uMOD .EQ 76
|
||
FPU.uADD .EQ 78
|
||
FPU.uSUB .EQ 80
|
||
|
||
FPU.uSHL .EQ 82
|
||
FPU.uSHR .EQ 84
|
||
|
||
FPU.uL .EQ 86
|
||
FPU.uLE .EQ 88
|
||
FPU.uG .EQ 90
|
||
FPU.uGE .EQ 92
|
||
|
||
FPU.uE .EQ 94
|
||
FPU.uNE .EQ 96
|
||
|
||
FPU.uAND .EQ 98
|
||
FPU.uOR .EQ 100
|
||
FPU.uXOR .EQ 102
|
||
|
||
FPU.uLAND .EQ 104
|
||
FPU.uLOR .EQ 106
|
||
*-------------------------------------- int32
|
||
FPU.lMUL .EQ 108
|
||
FPU.lDIV .EQ 110
|
||
FPU.lMOD .EQ 112
|
||
FPU.lADD .EQ 114
|
||
FPU.lSUB .EQ 116
|
||
|
||
FPU.lSHL .EQ 118
|
||
FPU.lSHR .EQ 120
|
||
|
||
FPU.lL .EQ 122
|
||
FPU.lLE .EQ 124
|
||
FPU.lG .EQ 126
|
||
FPU.lGE .EQ 128
|
||
|
||
FPU.lE .EQ 130
|
||
FPU.lNE .EQ 132
|
||
|
||
FPU.lAND .EQ 134
|
||
FPU.lOR .EQ 136
|
||
FPU.lXOR .EQ 138
|
||
|
||
FPU.lLAND .EQ 140
|
||
FPU.lLOR .EQ 142
|
||
*-------------------------------------- float
|
||
FPU.fMUL .EQ 144
|
||
FPU.fDIV .EQ 146
|
||
FPU.fMOD .EQ 148
|
||
FPU.fADD .EQ 150
|
||
FPU.fSUB .EQ 152
|
||
|
||
FPU.fSHL .EQ 154
|
||
FPU.fSHR .EQ 156
|
||
|
||
FPU.fL .EQ 158
|
||
FPU.fLE .EQ 160
|
||
FPU.fG .EQ 162
|
||
FPU.fGE .EQ 164
|
||
|
||
FPU.fE .EQ 166
|
||
FPU.fNE .EQ 168
|
||
|
||
FPU.fAND .EQ 170
|
||
FPU.fOR .EQ 172
|
||
FPU.fXOR .EQ 174
|
||
|
||
FPU.fLAND .EQ 176
|
||
FPU.fLOR .EQ 178
|
||
*--------------------------------------
|
||
* math.h
|
||
*--------------------------------------
|
||
FPU.PWR .EQ 180
|
||
*--------------------------------------
|
||
FPU.LOG .EQ 182
|
||
FPU.SQR .EQ 184
|
||
FPU.EXP .EQ 186
|
||
FPU.COS .EQ 188
|
||
FPU.SIN .EQ 190
|
||
FPU.TAN .EQ 192
|
||
FPU.ATAN .EQ 194
|
||
|
||
FPU.SETARG .EQ 196 fadd.....
|
||
FPU.SETFAC .EQ 198 log...., PrintF
|
||
|
||
FPU.GETFAC .EQ 200 Copy FAC to (FORPNT)
|
||
FPU.FCOMP .EQ 202
|
||
|
||
FPU.LTOF .EQ 204 Float
|
||
FPU.QINT .EQ 206 lrintf
|
||
|
||
FPU.FIN .EQ 208 sscanf
|
||
FPU.FOUT .EQ 210 PrintF
|
||
*--------------------------------------
|
||
.MA FPU
|
||
ldx #FPU.]1
|
||
jsr A2osX.FPUCALL
|
||
.EM
|
||
*--------------------------------------
|
||
* Global DATA Segment Access
|
||
*--------------------------------------
|
||
.MA LEA.G
|
||
clc
|
||
lda pData
|
||
adc #]1
|
||
tay
|
||
lda pData+1
|
||
adc /]1
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHEA.G
|
||
>LEA.G ]1
|
||
>PUSHYA
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHB.G
|
||
ldy #]1
|
||
lda (pData),y
|
||
>PUSHA
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHW.G
|
||
ldy #]1+1
|
||
lda (pData),y
|
||
>PUSHA
|
||
dey
|
||
lda (pData),y
|
||
>PUSHA
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHL.G
|
||
ldy #]1+4
|
||
:1 dey
|
||
lda (pData),y
|
||
>PUSHA
|
||
cpy #]1
|
||
bne :1
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PULLL.G
|
||
ldy #]1
|
||
:1 >PULLA
|
||
sta (pData),y
|
||
iny
|
||
cpy #]1+4
|
||
bne :1
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHF.G
|
||
ldy #]1+5
|
||
:1 dey
|
||
lda (pData),y
|
||
>PUSHA
|
||
cpy #]1
|
||
bne :1
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PULLF.G
|
||
ldy #]1
|
||
:1 >PULLA
|
||
sta (pData),y
|
||
iny
|
||
cpy #]1+5
|
||
bne :1
|
||
.EM
|
||
*--------------------------------------
|
||
.MA LDA.G
|
||
ldy #]1
|
||
lda (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
.MA STZ.G
|
||
ldy #]1
|
||
lda #0
|
||
sta (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
.MA STA.G
|
||
ldy #]1
|
||
sta (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
.MA AND.G
|
||
ldy #]1
|
||
and (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
.MA ORA.G
|
||
ldy #]1
|
||
ora (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
.MA EOR.G
|
||
ldy #]1
|
||
eor (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
.MA CMP.G
|
||
ldy #]1
|
||
cmp (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
.MA ADC.G
|
||
ldy #]1
|
||
adc (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
.MA SBC.G
|
||
ldy #]1
|
||
sbc (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
.MA STZW.G
|
||
>STZ.G ]1
|
||
iny
|
||
sta (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
.MA INC.G
|
||
>LDA.G ]1
|
||
inc
|
||
sta (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
.MA INCW.G
|
||
>INC.G ]1
|
||
bne :1
|
||
iny
|
||
lda (pData),y
|
||
inc
|
||
sta (pData),y
|
||
|
||
:1 .EQ *
|
||
.EM
|
||
*--------------------------------------
|
||
.MA DEC.G
|
||
>LDA.G ]1
|
||
dec
|
||
sta (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
.MA DECW.G
|
||
>LDA.G ]1
|
||
bne :1
|
||
dec
|
||
sta (pData),y
|
||
iny
|
||
lda (pData),y
|
||
:1 dec
|
||
sta (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
.MA LDYA.G
|
||
>LDA.G ]1
|
||
pha
|
||
iny
|
||
lda (pData),y
|
||
ply
|
||
.EM
|
||
*--------------------------------------
|
||
.MA STYA.G
|
||
phy
|
||
ldy #]1+1
|
||
sta (pData),y
|
||
dey
|
||
pla
|
||
sta (pData),y
|
||
.EM
|
||
*--------------------------------------
|
||
* STACK PUSH/PULL
|
||
*--------------------------------------
|
||
.MA PUSHA
|
||
dec pStack
|
||
sta (pStack)
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PULLA
|
||
lda (pStack)
|
||
inc pStack
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHYA
|
||
>PUSHA
|
||
tya
|
||
>PUSHA
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PULLYA
|
||
>PULLA
|
||
tay
|
||
>PULLA
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHBI
|
||
lda #]1
|
||
>PUSHA
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHB
|
||
.DO ]#=2
|
||
lda ]1,]2
|
||
>PUSHA
|
||
.ELSE
|
||
lda ]1
|
||
>PUSHA
|
||
.FIN
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PULLB
|
||
.DO ]#=2
|
||
>PULLA
|
||
sta ]1,]2
|
||
.ELSE
|
||
>PULLA
|
||
sta ]1
|
||
.FIN
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHWZ
|
||
lda #0
|
||
>PUSHA
|
||
>PUSHA
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHWI
|
||
lda /]1
|
||
>PUSHA
|
||
lda #]1
|
||
>PUSHA
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHW
|
||
.DO ]#=2
|
||
lda ]1+1,]2
|
||
>PUSHA
|
||
lda ]1,]2
|
||
>PUSHA
|
||
.ELSE
|
||
lda ]1+1
|
||
>PUSHA
|
||
lda ]1
|
||
>PUSHA
|
||
.FIN
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PULLW
|
||
>PULLA
|
||
sta ]1
|
||
>PULLA
|
||
sta ]1+1
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHLZ
|
||
lda #0
|
||
ldy #3
|
||
:1 >PUSHA
|
||
dey
|
||
bpl :1
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHL
|
||
ldy #3
|
||
:1 lda ]1,y
|
||
>PUSHA
|
||
dey
|
||
bpl :1
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PULLL
|
||
ldy #0
|
||
:1 >PULLA
|
||
sta ]1,y
|
||
iny
|
||
cpy #4
|
||
bne :1
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PUSHF
|
||
ldy #4
|
||
:1 lda ]1,y
|
||
>PUSHA
|
||
dey
|
||
bpl :1
|
||
.EM
|
||
*--------------------------------------
|
||
.MA PULLF
|
||
ldy #0
|
||
:1 >PULLA
|
||
sta ]1,y
|
||
iny
|
||
cpy #5
|
||
bne :1
|
||
.EM
|
||
*--------------------------------------
|
||
.MA ENTER
|
||
>PUSHB pBase
|
||
lda pStack
|
||
sta pBase
|
||
sec
|
||
sbc #]1
|
||
sta pStack
|
||
.EM
|
||
*--------------------------------------
|
||
.MA LEAVE
|
||
pha
|
||
lda pStack
|
||
sta pBase
|
||
>PULLB pBase
|
||
pla
|
||
.EM
|
||
*--------------------------------------
|
||
.MA POP
|
||
.DO ]1=1
|
||
inc pStack
|
||
.FIN
|
||
.DO ]1=2
|
||
inc pStack
|
||
inc pStack
|
||
.FIN
|
||
.DO ]1=3
|
||
inc pStack
|
||
inc pStack
|
||
inc pStack
|
||
.FIN
|
||
.DO ]1>3
|
||
pha
|
||
lda #]1
|
||
:1 inc pStack
|
||
dec
|
||
bne :1
|
||
pla
|
||
.FIN
|
||
.EM
|
||
*--------------------------------------
|
||
.MA RET
|
||
>POP ]1
|
||
rts
|
||
.EM
|
||
*--------------------------------------
|
||
* General WORD Manipulation Macros
|
||
*--------------------------------------
|
||
.MA LDYAI
|
||
ldy #]1
|
||
lda /]1
|
||
.EM
|
||
*--------------------------------------
|
||
.MA LDYA
|
||
.DO ]#=2
|
||
ldy ]1,]2
|
||
lda ]1+1,]2
|
||
.ELSE
|
||
ldy ]1
|
||
lda ]1+1
|
||
.FIN
|
||
.EM
|
||
*--------------------------------------
|
||
.MA STYA
|
||
.DO ]#=2
|
||
sta ]1+1,]2
|
||
tya
|
||
sta ]1,]2
|
||
.ELSE
|
||
sty ]1
|
||
sta ]1+1
|
||
.FIN
|
||
.EM
|
||
*--------------------------------------
|
||
* General Strings Macros
|
||
*--------------------------------------
|
||
.MA PSTR
|
||
.DA #:1-*-1
|
||
.AS "]1"
|
||
:1 .EQ *
|
||
.EM
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE inc/macros.i
|