mirror of
https://github.com/marketideas/qasm.git
synced 2024-06-10 14:29:33 +00:00
482 lines
10 KiB
ArmAsm
482 lines
10 KiB
ArmAsm
|
lst off
|
||
|
;cas in
|
||
|
tr on
|
||
|
exp only
|
||
|
|
||
|
rel
|
||
|
xc
|
||
|
xc
|
||
|
mx %00 ; make sure we're in 16-bit mode!
|
||
|
|
||
|
;use util.macs
|
||
|
use qatools.macs
|
||
|
use ../data/qa.equates
|
||
|
|
||
|
brl start
|
||
|
|
||
|
userid ds 2 ;my userid
|
||
|
message ds 2
|
||
|
subtype ds 4
|
||
|
asmdp ds 2
|
||
|
|
||
|
filename ds 130,0
|
||
|
txttypes hex 0204B0
|
||
|
|
||
|
start php
|
||
|
phb
|
||
|
phd
|
||
|
phk
|
||
|
plb
|
||
|
rep $30
|
||
|
sta userid
|
||
|
tdc
|
||
|
sta asmdp
|
||
|
pea 0
|
||
|
_QAStatus
|
||
|
pla
|
||
|
bne :ok
|
||
|
pld
|
||
|
plb
|
||
|
plp
|
||
|
rep $30
|
||
|
jsl prodos
|
||
|
dw $29
|
||
|
adrl :quit
|
||
|
:quit adrl $00
|
||
|
dw $00
|
||
|
|
||
|
:ok rep $30
|
||
|
stz prodoserr
|
||
|
|
||
|
pea 0
|
||
|
psl #$00
|
||
|
lda userid
|
||
|
pha
|
||
|
_QAGetMessagebyID
|
||
|
pll subtype
|
||
|
pla
|
||
|
sta message
|
||
|
beq :0
|
||
|
cmp #maxamessage
|
||
|
blt :call
|
||
|
lda #$FFFF
|
||
|
jmp :xit
|
||
|
:0 lda #$00
|
||
|
jmp :xit
|
||
|
:call dec
|
||
|
asl
|
||
|
tax
|
||
|
jsr (:tbl,x)
|
||
|
:xit rep $30
|
||
|
pha
|
||
|
lda userid
|
||
|
ora #asmmemid
|
||
|
pha
|
||
|
_disposeall
|
||
|
pla
|
||
|
pld
|
||
|
plb
|
||
|
plp
|
||
|
cmpl :one
|
||
|
rtl
|
||
|
:one dw $01
|
||
|
|
||
|
:tbl dw cmdline ;parsecmdline
|
||
|
dw txtfile
|
||
|
dw loadedfile
|
||
|
|
||
|
loadedfile php
|
||
|
rep $30
|
||
|
psl #asmstr
|
||
|
_QADrawString
|
||
|
lda #'.'
|
||
|
jsr drawchar
|
||
|
lda #$0d
|
||
|
jsr drawchar
|
||
|
jsr drawchar
|
||
|
ldx subtype
|
||
|
ldy subtype+2
|
||
|
jsl asm
|
||
|
bcc :clc
|
||
|
:sec rep $30
|
||
|
plp
|
||
|
sec
|
||
|
rts
|
||
|
:clc plp
|
||
|
clc
|
||
|
rts
|
||
|
|
||
|
txtfile php
|
||
|
rep $30
|
||
|
psl #pathname
|
||
|
_QAGetPath
|
||
|
lda pathname
|
||
|
and #$ff
|
||
|
jeq :notfound
|
||
|
tay
|
||
|
sep $20
|
||
|
]lup lda pathname,y
|
||
|
tyx
|
||
|
sta filename,x
|
||
|
dey
|
||
|
bpl ]lup
|
||
|
rep $30
|
||
|
|
||
|
psl #$00
|
||
|
psl #filename
|
||
|
psl #$00 ;filepos
|
||
|
psl #-1 ;whole file
|
||
|
psl #txttypes
|
||
|
lda userid
|
||
|
ora #asmmemid
|
||
|
pha
|
||
|
psl #$00
|
||
|
pea $8000
|
||
|
_QALoadfile
|
||
|
plx
|
||
|
ply
|
||
|
jcs :sec
|
||
|
phx
|
||
|
phy
|
||
|
psl #asmstr
|
||
|
_QADrawString
|
||
|
lda #' '
|
||
|
jsr drawchar
|
||
|
psl #filename
|
||
|
_QADrawString
|
||
|
lda #$0d
|
||
|
jsr drawchar
|
||
|
jsr drawchar
|
||
|
ply
|
||
|
plx
|
||
|
jsl asm
|
||
|
bcc :clc
|
||
|
jmp :sec
|
||
|
:notfound rep $30
|
||
|
lda #$46 ;file not found error
|
||
|
:sec rep $30
|
||
|
plp
|
||
|
sec
|
||
|
rts
|
||
|
:clc rep $30
|
||
|
lda #$00
|
||
|
plp
|
||
|
clc
|
||
|
rts
|
||
|
|
||
|
cmdline php
|
||
|
rep $30
|
||
|
stz pathname
|
||
|
psl #pathname
|
||
|
pea 80
|
||
|
_QAGetCmdLine
|
||
|
ldy #$01
|
||
|
sep $30
|
||
|
lda pathname
|
||
|
beq :notfound
|
||
|
]lup lda pathname,y
|
||
|
and #$7f
|
||
|
cmp #' '
|
||
|
blt :notfound
|
||
|
bne :p1
|
||
|
iny
|
||
|
jmp ]lup
|
||
|
:p1 iny
|
||
|
]lup lda pathname,y
|
||
|
and #$7f
|
||
|
cmp #' '
|
||
|
blt :notfound
|
||
|
beq :p2
|
||
|
iny
|
||
|
jmp ]lup
|
||
|
:p2 iny
|
||
|
]lup lda pathname,y
|
||
|
and #$7f
|
||
|
cmp #' '
|
||
|
blt :notfound
|
||
|
bne :ok
|
||
|
iny
|
||
|
jmp ]lup
|
||
|
:ok ldx #$00
|
||
|
sta filename+1,x
|
||
|
]get inx
|
||
|
iny
|
||
|
lda pathname,y
|
||
|
and #$7f
|
||
|
cmp #' '+1
|
||
|
blt :set
|
||
|
sta filename+1,x
|
||
|
jmp ]get
|
||
|
:notfound jmp :nf1
|
||
|
:set txa
|
||
|
sta filename
|
||
|
rep $30
|
||
|
lda filename
|
||
|
and #$ff
|
||
|
cmp #62
|
||
|
bge :nosuff
|
||
|
tax
|
||
|
lda filename,x
|
||
|
and #$7f
|
||
|
cmp #'/'
|
||
|
beq :nosuff
|
||
|
inx
|
||
|
lda #'.S'
|
||
|
sta filename,x
|
||
|
inx
|
||
|
txa
|
||
|
sep $20
|
||
|
sta filename
|
||
|
|
||
|
:nosuff rep $30
|
||
|
psl #$00
|
||
|
psl #filename
|
||
|
psl #$00 ;filepos
|
||
|
psl #-1 ;whole file
|
||
|
psl #txttypes
|
||
|
lda userid
|
||
|
ora #asmmemid
|
||
|
pha
|
||
|
psl #$00
|
||
|
pea $8000
|
||
|
_QALoadfile
|
||
|
plx
|
||
|
ply
|
||
|
bcs :xit
|
||
|
phy
|
||
|
phx
|
||
|
psl #asmstr
|
||
|
_QADrawString
|
||
|
lda #' '
|
||
|
jsr drawchar
|
||
|
psl #filename
|
||
|
_QADrawString
|
||
|
lda #$0d
|
||
|
jsr drawchar
|
||
|
jsr drawchar
|
||
|
plx
|
||
|
ply
|
||
|
jsl asm
|
||
|
bcc :clc1
|
||
|
jmp :xit
|
||
|
:nf1 rep $30
|
||
|
lda #$46
|
||
|
sec
|
||
|
jmp :xit
|
||
|
:clc1 rep $30
|
||
|
lda #$0000
|
||
|
:xit rep $30
|
||
|
plp
|
||
|
cmpl :one
|
||
|
rts
|
||
|
:one dw $01
|
||
|
|
||
|
asmstr str 0d,'Assembling'
|
||
|
|
||
|
prbytel
|
||
|
php
|
||
|
rep $30
|
||
|
phy
|
||
|
phx
|
||
|
pha
|
||
|
pha
|
||
|
_QAPrbytel
|
||
|
pla
|
||
|
plx
|
||
|
ply
|
||
|
plp
|
||
|
rts
|
||
|
|
||
|
prbyte
|
||
|
php
|
||
|
rep $30
|
||
|
phy
|
||
|
phx
|
||
|
pha
|
||
|
pha
|
||
|
_QAPrbyte
|
||
|
pla
|
||
|
plx
|
||
|
ply
|
||
|
plp
|
||
|
rts
|
||
|
|
||
|
|
||
|
drawchar php
|
||
|
rep $30
|
||
|
phx
|
||
|
phy
|
||
|
pha
|
||
|
and #$7f
|
||
|
pha
|
||
|
_QADrawChar
|
||
|
:plp pla
|
||
|
ply
|
||
|
plx
|
||
|
plp
|
||
|
rts
|
||
|
|
||
|
|
||
|
printdec php
|
||
|
rep $30
|
||
|
phx
|
||
|
pha
|
||
|
psl #:str
|
||
|
pea #11
|
||
|
pea $00
|
||
|
tll $270b
|
||
|
sep $30
|
||
|
ldy #$00
|
||
|
ldx #$00
|
||
|
]lup lda :str,x
|
||
|
and #$7f
|
||
|
cmp #' '
|
||
|
beq :inx
|
||
|
cmp #'0'
|
||
|
bne :draw
|
||
|
cpx #10
|
||
|
bge :draw
|
||
|
cpy #$00
|
||
|
beq :inx
|
||
|
:draw phy
|
||
|
phx
|
||
|
rep $30
|
||
|
jsr drawchar
|
||
|
* pha
|
||
|
* tll $180c
|
||
|
sep $30
|
||
|
plx
|
||
|
ply
|
||
|
iny
|
||
|
:inx inx
|
||
|
cpx #11
|
||
|
blt ]lup
|
||
|
plp
|
||
|
rts
|
||
|
:str ds 12,0
|
||
|
|
||
|
drawlable php
|
||
|
rep $30
|
||
|
pea $00
|
||
|
tdc
|
||
|
clc
|
||
|
adc #labstr
|
||
|
pha
|
||
|
_QADrawString
|
||
|
lda #$0d
|
||
|
jsr drawchar
|
||
|
plp
|
||
|
rts
|
||
|
|
||
|
random php ;save environment
|
||
|
phb
|
||
|
phk
|
||
|
plb
|
||
|
rep %00111001
|
||
|
ldx indexi
|
||
|
ldy indexj
|
||
|
lda array-2,x
|
||
|
adc array-2,y
|
||
|
sta array-2,x
|
||
|
dex
|
||
|
dex
|
||
|
bne :dy
|
||
|
ldx #17*2 ;cycle index if at end of
|
||
|
:dy dey ; the array
|
||
|
dey
|
||
|
bne :setix
|
||
|
ldy #17*2
|
||
|
:setix stx indexi
|
||
|
sty indexj
|
||
|
plb
|
||
|
plp
|
||
|
rts
|
||
|
|
||
|
indexi da 17*2 ;the relative positions of
|
||
|
indexj da 5*2 ; these indexes is crucial
|
||
|
|
||
|
array da 1,1,2,3,5,8,13,21,54,75,129,204
|
||
|
da 323,527,850,1377,2227
|
||
|
|
||
|
err *-array-34
|
||
|
|
||
|
*=================================================
|
||
|
* SEED seeds generator from 16 bit contents of AXY
|
||
|
*-------------------------------------------------
|
||
|
|
||
|
seed php
|
||
|
rep %00110000
|
||
|
seed2 phb
|
||
|
phk
|
||
|
plb
|
||
|
pha
|
||
|
ora #1 ;at least one must be odd
|
||
|
sta array
|
||
|
stx array+2
|
||
|
phx ;push index regs on stack
|
||
|
phy
|
||
|
ldx #30
|
||
|
]lup sta array+2,x
|
||
|
dex
|
||
|
dex
|
||
|
lda 1,s ;was y
|
||
|
sta array+2,x
|
||
|
dex
|
||
|
dex
|
||
|
lda 3,s ;was x
|
||
|
sta array+2,x
|
||
|
lda 5,s ;original a
|
||
|
dex
|
||
|
dex
|
||
|
bne ]lup
|
||
|
lda #17*2
|
||
|
sta indexi ;init proper indexes
|
||
|
lda #5*2 ; into array
|
||
|
sta indexj
|
||
|
jsr random ;warm the generator up.
|
||
|
jsr random
|
||
|
ply ;replace all registers
|
||
|
plx
|
||
|
pla
|
||
|
plb
|
||
|
plp
|
||
|
rts
|
||
|
|
||
|
*=================================================
|
||
|
* RANDOMIZE seed generator from system clock.
|
||
|
* Assumes Misc Toolset active.
|
||
|
*-------------------------------------------------
|
||
|
|
||
|
randomize php
|
||
|
rep %00110000
|
||
|
lda #0
|
||
|
pha
|
||
|
pha
|
||
|
pha
|
||
|
pha
|
||
|
ldx #$D03 ;readtimehex
|
||
|
jsl $E10000
|
||
|
pla
|
||
|
plx
|
||
|
ply
|
||
|
sta 1,s ;trick to pull last word
|
||
|
pla ; fm stack without ruining
|
||
|
bra seed2 ; the previous ones.
|
||
|
|
||
|
put asm.vars
|
||
|
put asm.1
|
||
|
put asm.eval
|
||
|
put asm.cond
|
||
|
put asm.opcodes
|
||
|
put asm.dsk
|
||
|
put asm.errors
|
||
|
put ../data/opdata
|
||
|
|
||
|
lst
|
||
|
chk
|
||
|
lst off
|
||
|
|
||
|
;typ exe
|
||
|
;sav utility/qasmgs.l
|
||
|
|