mirror of https://github.com/marketideas/qasm.git
502 lines
11 KiB
ArmAsm
502 lines
11 KiB
ArmAsm
lst off
|
|
cas in
|
|
tr on
|
|
exp only
|
|
|
|
rel
|
|
xc
|
|
xc
|
|
mx %00 ; make sure we're in 16-bit mode!
|
|
|
|
|
|
doexpress = $01
|
|
|
|
use 4/util.macs
|
|
use qatools.macs
|
|
use 2/qa.equates
|
|
|
|
brl start
|
|
|
|
put link.vars
|
|
|
|
userid ds 2 ;my userid
|
|
linkdp ds 2
|
|
filename ds 130,0
|
|
quickname ds 130,0
|
|
txttypes hex 0204B0
|
|
lnktype hex 01f8
|
|
|
|
start php
|
|
phb
|
|
phd
|
|
phk
|
|
plb
|
|
rep $30
|
|
sta userid
|
|
tdc
|
|
sta linkdp
|
|
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
|
|
stz quicklink
|
|
|
|
pea 0
|
|
psl #$00
|
|
lda userid
|
|
pha
|
|
_QAGetMessagebyID
|
|
pla
|
|
sta subtype
|
|
pla
|
|
sta subtype+2
|
|
pla
|
|
sta message
|
|
stz filename
|
|
lda message
|
|
beq :xit1
|
|
cmp #maxlmessage
|
|
blt :call
|
|
lda #$FFFF
|
|
jmp :xit
|
|
:call dec
|
|
asl
|
|
tax
|
|
jsr (:tbl,x)
|
|
bra :xit
|
|
:bad lda #$FFFF
|
|
bra :xit
|
|
:xit1 lda #$00
|
|
:xit rep $30
|
|
pha
|
|
lda userid
|
|
ora #linkmemid
|
|
pha
|
|
_disposeall
|
|
pla
|
|
pld
|
|
plb
|
|
plp
|
|
cmpl :one
|
|
rtl
|
|
:one dw $01
|
|
|
|
:tbl dw cmdline
|
|
dw txtfile
|
|
dw fromhandle
|
|
dw doquicklink
|
|
dw project1
|
|
dw project2
|
|
|
|
project1 php
|
|
rep $30
|
|
lda #$46
|
|
plp
|
|
cmp :one
|
|
rts
|
|
:one dw 1
|
|
project2 php
|
|
rep $30
|
|
lda #$46
|
|
plp
|
|
cmp :one
|
|
rts
|
|
:one dw 1
|
|
|
|
|
|
fromhandle php
|
|
rep $30
|
|
psl #linkstr
|
|
_QADrawString
|
|
lda #'.'
|
|
jsr drawchar
|
|
lda #$0d
|
|
jsr drawchar
|
|
ldx subtype
|
|
ldy subtype+2
|
|
jsl link
|
|
bcc :clc
|
|
:sec rep $30
|
|
plp
|
|
sec
|
|
rts
|
|
:clc rep $30
|
|
lda #$00
|
|
plp
|
|
clc
|
|
rts
|
|
|
|
txtfile php
|
|
rep $30
|
|
psl #asmpath
|
|
_QAGetPath
|
|
lda asmpath
|
|
and #$ff
|
|
jeq :notfound
|
|
tay
|
|
sep $20
|
|
]lup lda asmpath,y
|
|
tyx
|
|
and #$7f
|
|
sta filename,x
|
|
dey
|
|
bpl ]lup
|
|
lda filename
|
|
cmp #62
|
|
bge :nosufx
|
|
tax
|
|
lda filename,x
|
|
cmp #'/'
|
|
beq :nosufx
|
|
cmp #':'
|
|
beq :nosufx
|
|
|
|
inc filename
|
|
inc filename
|
|
inx
|
|
lda #'.'
|
|
sta filename,x
|
|
inx
|
|
lda #'S'
|
|
sta filename,x
|
|
|
|
:nosufx rep $30
|
|
psl #$00
|
|
psl #filename
|
|
psl #$00 ;filepos
|
|
psl #-1 ;whole file
|
|
psl #txttypes
|
|
lda userid
|
|
ora #linkmemid
|
|
pha
|
|
psl #$00
|
|
pea $8000
|
|
_QALoadfile
|
|
plx
|
|
ply
|
|
jcs :sec
|
|
phx
|
|
phy
|
|
psl #linkstr
|
|
_QADrawString
|
|
lda #' '
|
|
jsr drawchar
|
|
psl #filename
|
|
_QADrawString
|
|
lda #$0d
|
|
jsr drawchar
|
|
ply
|
|
plx
|
|
jsl link
|
|
bcc :clc
|
|
jmp :sec
|
|
:notfound rep $30
|
|
lda #$46
|
|
:sec rep $30
|
|
plp
|
|
sec
|
|
rts
|
|
:clc rep $30
|
|
lda #$0000
|
|
plp
|
|
clc
|
|
rts
|
|
|
|
doquicklink php
|
|
rep $30
|
|
lda subtype
|
|
ora subtype+2
|
|
bne :file
|
|
psl #$00
|
|
psl #qtextend-qtext
|
|
lda userid
|
|
ora #linkmemid
|
|
pha
|
|
pea $8000
|
|
psl #$00
|
|
_Newhandle
|
|
plx
|
|
ply
|
|
jcs :sec
|
|
phy
|
|
phx
|
|
|
|
psl #qtext
|
|
phy
|
|
phx
|
|
psl #qtextend-qtext
|
|
tll $2802 ;_PtrToHand
|
|
psl #quickname
|
|
_QAGetPath
|
|
lda #^quickname
|
|
sta subtype+2
|
|
lda #quickname
|
|
sta subtype
|
|
jmp :go1
|
|
|
|
:file sep $30
|
|
ldx :fname
|
|
]lup lda :fname,x
|
|
sta filename,x
|
|
dex
|
|
bpl ]lup
|
|
rep $30
|
|
|
|
psl #$00
|
|
psl #filename
|
|
psl #$00 ;filepos
|
|
psl #-1 ;whole file
|
|
psl #txttypes
|
|
lda userid
|
|
ora #linkmemid
|
|
pha
|
|
psl #$00
|
|
pea $8000
|
|
_QALoadfile
|
|
plx
|
|
ply
|
|
bcc :go
|
|
cmp #$46
|
|
beq :next
|
|
jmp :sec
|
|
|
|
:next sep $30
|
|
ldx :fname1
|
|
]lup lda :fname1,x
|
|
sta filename,x
|
|
dex
|
|
bpl ]lup
|
|
rep $30
|
|
psl #$00
|
|
psl #filename
|
|
psl #$00 ;filepos
|
|
psl #-1 ;whole file
|
|
psl #txttypes
|
|
lda userid
|
|
ora #linkmemid
|
|
pha
|
|
psl #$00
|
|
pea $8000
|
|
_QALoadfile
|
|
plx
|
|
ply
|
|
jcs :sec
|
|
|
|
:go phx
|
|
phy
|
|
:go1 psl #:quickstr
|
|
_QADrawString
|
|
lda #$FFFF
|
|
sta quicklink
|
|
psl #:zero
|
|
_QASetObjPath
|
|
ply
|
|
plx
|
|
jsl link
|
|
bcc :clc
|
|
jmp :sec
|
|
:notfound rep $30
|
|
lda #$46
|
|
:sec rep $30
|
|
plp
|
|
sec
|
|
rts
|
|
:clc rep $30
|
|
lda #$0000
|
|
plp
|
|
clc
|
|
rts
|
|
:fname str 'QuickLINK.S'
|
|
:fname1 str '1:QASYSTEM:QuickLINK.S'
|
|
:quickstr str 0d,'Linking.',0d
|
|
:zero hex 0000
|
|
|
|
qtext asc ' OVR ALL',0D
|
|
asc ' ASM ',5D,'1',0D
|
|
asc ' LNK ',5D,'2',0D
|
|
asc ' SAV ',5D,'3',0D
|
|
qtextend
|
|
|
|
cmdline php
|
|
rep $30
|
|
psl #asmpath
|
|
pea 80
|
|
_QAGetCmdLine
|
|
ldy #$01
|
|
sep $30
|
|
lda asmpath
|
|
beq :notfound
|
|
]lup lda asmpath,y
|
|
and #$7f
|
|
cmp #' '
|
|
blt :notfound
|
|
bne :p1
|
|
iny
|
|
jmp ]lup
|
|
:p1 iny
|
|
]lup lda asmpath,y
|
|
and #$7f
|
|
cmp #' '
|
|
blt :notfound
|
|
beq :p2
|
|
iny
|
|
jmp ]lup
|
|
:p2 iny
|
|
]lup lda asmpath,y
|
|
and #$7f
|
|
cmp #' '
|
|
blt :notfound
|
|
bne :ok
|
|
iny
|
|
jmp ]lup
|
|
:ok ldx #$00
|
|
sta filename+1,x
|
|
]get inx
|
|
iny
|
|
lda asmpath,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
|
|
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 #linkmemid
|
|
pha
|
|
psl #$00
|
|
pea $8000
|
|
_QALoadfile
|
|
plx
|
|
ply
|
|
jcs :xit
|
|
phy
|
|
phx
|
|
psl #linkstr
|
|
_QADrawString
|
|
lda #' '
|
|
jsr drawchar
|
|
psl #filename
|
|
_QADrawString
|
|
lda #$0d
|
|
jsr drawchar
|
|
plx
|
|
ply
|
|
jsl link
|
|
bcs :xit
|
|
jmp :clc
|
|
:nf1 rep $30
|
|
lda #$46
|
|
jmp :xit
|
|
:clc rep $30
|
|
lda #$0000
|
|
:xit rep $30
|
|
plp
|
|
cmp :one
|
|
rts
|
|
:one dw $01
|
|
|
|
linkstr str 0d,'Linking'
|
|
|
|
|
|
prbytel
|
|
php
|
|
rep $30
|
|
pha
|
|
phx
|
|
phy
|
|
pha
|
|
_QAPrbytel
|
|
ply
|
|
plx
|
|
pla
|
|
plp
|
|
rts
|
|
|
|
prbyte
|
|
php
|
|
rep $30
|
|
pha
|
|
phx
|
|
phy
|
|
pha
|
|
_QAPrbyte
|
|
ply
|
|
plx
|
|
pla
|
|
plp
|
|
rts
|
|
|
|
|
|
drawchar phx
|
|
phy
|
|
pha
|
|
php
|
|
rep $30
|
|
and #$7f
|
|
pha
|
|
_QADrawChar
|
|
:plp plp
|
|
pla
|
|
ply
|
|
plx
|
|
rts
|
|
|
|
|
|
put linker.1
|
|
put linker.2
|
|
put link.eval
|
|
do doexpress
|
|
put link.express
|
|
fin
|
|
put link.errors
|
|
|
|
tempbuff ds 130
|
|
|
|
lst
|
|
chk
|
|
lst off
|
|
|
|
typ exe
|
|
sav utility/qlinkgs.l
|
|
|