A2osX/INC/MACROS.I.txt
2021-05-30 22:34:03 +02:00

661 lines
11 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
*--------------------------------------
.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
inc
sta pBase
clc
sbc #]1
sta pStack
.EM
*--------------------------------------
.MA LEAVE
pha
lda pBase
dec
sta pStack
>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