A2osX/INC/MACROS.I.txt

534 lines
9.0 KiB
Plaintext
Raw Normal View History

2015-03-14 21:48:35 +00:00
NEW
2019-07-07 20:48:57 +00:00
AUTO 3,1
.LIST OFF
2015-03-14 21:48:35 +00:00
*--------------------------------------
.MA DEBUG
2015-06-03 18:30:57 +00:00
:1 bit $C000
bpl :1
2015-03-14 21:48:35 +00:00
sta $C010
.EM
*--------------------------------------
.MA DEBUGOA
bit $C061
bpl :1
>DEBUG
:1 .EQ *
.EM
2015-03-14 21:48:35 +00:00
*--------------------------------------
* SYSCALLs Macros
*--------------------------------------
.MA SYSCALL
ldx #SYS.]1
jsr A2osX.SYSCALL
2015-03-14 21:48:35 +00:00
.EM
*--------------------------------------
.MA LIBCALL
ldy ]1
ldx #]2
jsr A2osX.LIBCALL
.EM
2019-05-05 17:15:37 +00:00
*--------------------------------------
.MA SLEEP
jsr A2osX.SLEEP
.EM
*--------------------------------------
.MA SYSCALL2
ldx #SYS.]1
jsr A2osX.SYSCALL2
.EM
2015-03-14 21:48:35 +00:00
*--------------------------------------
.MA MLICALL
ldx #]1
2015-06-03 18:30:57 +00:00
.DO ]1=MLIALLOCIRQ
2015-03-14 21:48:35 +00:00
lda #2
.FIN
2015-06-03 18:30:57 +00:00
.DO ]1=MLIDEALLOCIRQ
2015-03-14 21:48:35 +00:00
lda #1
.FIN
.DO ]1=MLIATALK
lda #1
.FIN
2015-03-14 21:48:35 +00:00
.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
2015-03-14 21:48:35 +00:00
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
jsr GP.MLICall
2015-03-14 21:48:35 +00:00
.EM
*--------------------------------------
2019-07-10 15:39:02 +00:00
* FPU Entry Point
*--------------------------------------
FPU.ADD32 .EQ 0
FPU.SUB32 .EQ 2
FPU.MUL32 .EQ 4
FPU.IMUL32 .EQ 6
FPU.DIV32 .EQ 8
FPU.IDIV32 .EQ 10
FPU.MOD32 .EQ 12
FPU.IMOD32 .EQ 14
2019-08-01 14:59:15 +00:00
FPU.CMP32 .EQ 16
FPU.ICMP32 .EQ 18
2019-07-10 15:39:02 +00:00
2019-08-01 14:59:15 +00:00
FPU.FADD .EQ 20
FPU.FSUB .EQ 22
FPU.FMULT .EQ 24
FPU.FDIV .EQ 26
FPU.PWR .EQ 28
2019-07-10 15:39:02 +00:00
2019-08-01 14:59:15 +00:00
FPU.LOG .EQ 30
FPU.SQR .EQ 32
FPU.EXP .EQ 34
FPU.COS .EQ 36
FPU.SIN .EQ 38
FPU.TAN .EQ 40
FPU.ATAN .EQ 42
2019-07-10 15:39:02 +00:00
2019-08-01 14:59:15 +00:00
FPU.SETARG .EQ 44 fadd.....
FPU.SETFAC .EQ 46 log...., PrintF
2019-07-10 15:39:02 +00:00
2019-08-01 14:59:15 +00:00
FPU.GETFAC .EQ 48 Copy FAC to (FORPNT)
FPU.FCOMP .EQ 50
2019-07-10 15:39:02 +00:00
2019-07-28 20:39:30 +00:00
FPU.LTOF .EQ 48 Float
FPU.QINT .EQ 50 lrintf
2019-07-10 15:39:02 +00:00
2019-08-01 14:59:15 +00:00
FPU.FIN .EQ 56 sscanf
FPU.FOUT .EQ 58 PrintF
2019-07-10 15:39:02 +00:00
*--------------------------------------
.MA FPU
ldx #FPU.]1
2020-02-28 07:21:46 +00:00
jsr A2osX.FPUCALL
2019-07-07 20:48:57 +00:00
.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
2018-01-15 06:50:44 +00:00
*--------------------------------------
.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
2018-06-14 15:31:36 +00:00
*--------------------------------------
.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
2018-08-23 15:16:20 +00:00
ldy #]1+5
2018-06-14 15:31:36 +00:00
: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
2019-04-08 15:39:38 +00:00
*--------------------------------------
.MA AND.G
ldy #]1
and (pData),y
.EM
2017-10-04 15:12:03 +00:00
*--------------------------------------
.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
*--------------------------------------
2019-05-27 15:37:31 +00:00
.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
2019-05-27 15:37:31 +00:00
*--------------------------------------
.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
2015-03-14 21:48:35 +00:00
*--------------------------------------
2015-06-03 18:30:57 +00:00
.MA PUSHA
dec pStack
2015-06-03 18:30:57 +00:00
sta (pStack)
2015-03-14 21:48:35 +00:00
.EM
*--------------------------------------
2015-06-03 18:30:57 +00:00
.MA PULLA
lda (pStack)
inc pStack
2015-03-14 21:48:35 +00:00
.EM
*--------------------------------------
2015-06-03 18:30:57 +00:00
.MA PUSHYA
>PUSHA
2015-06-03 18:30:57 +00:00
tya
>PUSHA
2015-03-14 21:48:35 +00:00
.EM
*--------------------------------------
2015-06-03 18:30:57 +00:00
.MA PULLYA
>PULLA
2015-06-03 18:30:57 +00:00
tay
>PULLA
2015-03-14 21:48:35 +00:00
.EM
*--------------------------------------
.MA PUSHBI
lda #]1
>PUSHA
2015-03-14 21:48:35 +00:00
.EM
*--------------------------------------
.MA PUSHB
.DO ]#=2
lda ]1,]2
>PUSHA
2015-03-14 21:48:35 +00:00
.ELSE
lda ]1
>PUSHA
2015-03-14 21:48:35 +00:00
.FIN
.EM
*--------------------------------------
.MA PULLB
.DO ]#=2
>PULLA
2015-03-14 21:48:35 +00:00
sta ]1,]2
.ELSE
>PULLA
2015-03-14 21:48:35 +00:00
sta ]1
.FIN
.EM
2019-06-07 15:02:51 +00:00
*--------------------------------------
.MA PUSHWZ
lda #0
>PUSHA
>PUSHA
.EM
2015-03-14 21:48:35 +00:00
*--------------------------------------
.MA PUSHWI
lda /]1
>PUSHA
2015-03-14 21:48:35 +00:00
lda #]1
>PUSHA
2015-03-14 21:48:35 +00:00
.EM
*--------------------------------------
.MA PUSHW
2018-10-05 14:58:38 +00:00
.DO ]#=2
lda ]1+1,]2
>PUSHA
lda ]1,]2
>PUSHA
.ELSE
2015-03-14 21:48:35 +00:00
lda ]1+1
>PUSHA
2015-03-14 21:48:35 +00:00
lda ]1
>PUSHA
2018-10-05 14:58:38 +00:00
.FIN
2015-03-14 21:48:35 +00:00
.EM
*--------------------------------------
.MA PULLW
>PULLA
2015-03-14 21:48:35 +00:00
sta ]1
>PULLA
2015-03-14 21:48:35 +00:00
sta ]1+1
.EM
2018-08-23 15:16:20 +00:00
*--------------------------------------
.MA PUSHL
ldy #3
2018-08-24 10:20:23 +00:00
:1 lda ]1,y
2018-08-23 15:16:20 +00:00
>PUSHA
dey
bpl :1
.EM
*--------------------------------------
.MA PULLL
ldy #0
:1 >PULLA
2018-08-24 10:20:23 +00:00
sta ]1,y
2018-08-23 15:16:20 +00:00
iny
cpy #4
bne :1
.EM
*--------------------------------------
.MA PUSHF
ldy #4
2018-08-24 10:20:23 +00:00
:1 lda ]1,y
2018-08-23 15:16:20 +00:00
>PUSHA
dey
bpl :1
.EM
*--------------------------------------
.MA PULLF
ldy #0
:1 >PULLA
2018-08-24 10:20:23 +00:00
sta ]1,y
2018-08-23 15:16:20 +00:00
iny
cpy #5
bne :1
.EM
2020-02-23 20:01:48 +00:00
*--------------------------------------
.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
2018-07-11 15:13:29 +00:00
*--------------------------------------
2019-07-25 06:13:56 +00:00
.MA POP
2018-07-11 15:13:29 +00:00
.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
2019-07-25 06:13:56 +00:00
.EM
*--------------------------------------
.MA RET
>POP ]1
2018-08-08 15:13:37 +00:00
rts
2018-07-11 15:13:29 +00:00
.EM
2015-03-14 21:48:35 +00:00
*--------------------------------------
* General WORD Manipulation Macros
*--------------------------------------
.MA LDYAI
ldy #]1
lda /]1
.EM
*--------------------------------------
.MA LDYA
.DO ]#=2
ldy ]1,]2
lda ]1+1,]2
2015-03-14 21:48:35 +00:00
.ELSE
ldy ]1
lda ]1+1
2015-03-14 21:48:35 +00:00
.FIN
.EM
*--------------------------------------
.MA STYA
.DO ]#=2
sta ]1+1,]2
tya
sta ]1,]2
.ELSE
sty ]1
2018-08-08 15:13:37 +00:00
sta ]1+1
2015-03-14 21:48:35 +00:00
.FIN
.EM
*--------------------------------------
* General Strings Macros
*--------------------------------------
.MA PSTR
.DA #:1-*-1
.AS "]1"
:1 .EQ *
2015-03-14 21:48:35 +00:00
.EM
2019-07-07 20:48:57 +00:00
*--------------------------------------
2015-03-14 21:48:35 +00:00
MAN
2019-07-07 20:48:57 +00:00
SAVE INC/MACROS.I