mirror of
https://github.com/marketideas/qasm.git
synced 2026-10-24 22:02:28 +00:00
Move the assembler to src/qasm. qlink links OMF 1.0 and 2.0 from a script. makeBin flattens a load file, qomf dumps OMF, and qpro builds ProDOS volumes. APW and MPW assemble through the ORCA front end. Relocatable modules emit OMF objects. Listings stay off unless -l is set. make boot assembles the GS/OS 6.0.1 ProDOS 8 kernel and BASIC.SYSTEM into an 800K volume. BASIC.SYSTEM accepts ls and pfx, and its splash reports PRODOS BASIC 2.0, copyright 1983-2026. IIGS.601.SRC is the source and the BASIC.SYSTEM oracle that image is built from.
1 line
6.0 KiB
Plaintext
1 line
6.0 KiB
Plaintext
****************************************************************
|
|
* Dave's macro file.
|
|
*
|
|
* contains macros for long conditional branching, store a,x macros
|
|
* ,etc.
|
|
*
|
|
* Version 1.1 10/17/88
|
|
*
|
|
****************************************************************
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
&lab HEADER
|
|
&lab PROC EXPORT
|
|
IF DebugFlag<>0 THEN
|
|
jml @1
|
|
dc.b '&lab',0
|
|
@1
|
|
ENDIF
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
ble &A
|
|
blt &A
|
|
beq &A
|
|
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
bgt &A
|
|
beq @1
|
|
bge &A
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
MACRO
|
|
bcsl &A
|
|
bcc @1
|
|
brl &A
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
bccl &A
|
|
bcs @1
|
|
brl &A
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
beql &A
|
|
bne @1
|
|
brl &A
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
bnel &A
|
|
beq @1
|
|
brl &A
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
bltl &A
|
|
bge @1
|
|
brl &A
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
bgel &A
|
|
blt @1
|
|
brl &A
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
blel &A
|
|
bgt @1
|
|
brl &A
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
bgtl &A
|
|
ble @1
|
|
brl &A
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
bmil &A
|
|
bpl @1
|
|
brl &A
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
bpll &A
|
|
bmi @1
|
|
brl &A
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
PushLongSpace
|
|
pha
|
|
pha
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
PushWordSpace
|
|
pha
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
PushAX
|
|
phx
|
|
pha
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
PullAX
|
|
pla
|
|
plx
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
PushZPtr &A
|
|
pea $0000
|
|
tdc
|
|
clc
|
|
adc #&A
|
|
pha
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
PushZWord &A
|
|
pei &A
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
PushZLong &A
|
|
PushZWord &A+2
|
|
PushZWord &A
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
ldax &addr,®s
|
|
IF &addr[1:1]='#' THEN
|
|
lda #&addr[2:255]
|
|
ldx #&addr[2:255]>>16
|
|
ELSEIF &addr[1:1]='[' THEN
|
|
IF ®s='y' THEN
|
|
lda &addr,y
|
|
pha
|
|
iny
|
|
iny
|
|
lda &addr,y
|
|
tax
|
|
pla
|
|
ELSE
|
|
ldy #®s+2
|
|
lda &addr,y
|
|
tax
|
|
ldy #®s
|
|
lda &addr,y
|
|
ENDIF
|
|
ELSEIF ®s='s' THEN
|
|
lda &addr+2,s
|
|
tax
|
|
lda &addr,s
|
|
ELSEIF ®s='' THEN
|
|
lda &addr
|
|
ldx &addr+2
|
|
ELSE
|
|
lda &addr+2,&offset
|
|
pha
|
|
lda &addr,&offset
|
|
plx
|
|
ENDIF
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
ldaxZPtr &A
|
|
ldx #0
|
|
tdc
|
|
clc
|
|
adc #&A
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
stax &addr,®s
|
|
IF &addr[1:1]='[' THEN
|
|
IF ®s='y' THEN
|
|
sta &addr,y
|
|
iny
|
|
iny
|
|
txa
|
|
sta &addr,y
|
|
ELSE
|
|
ldy #®s
|
|
sta &addr,y
|
|
txa
|
|
ldy #®s+2
|
|
sta &addr,y
|
|
ENDIF
|
|
ELSEIF ®s='s' THEN
|
|
sta &addr,s
|
|
txa
|
|
sta &addr+2,s
|
|
ELSEIF ®s='' THEN
|
|
sta &addr
|
|
stx &addr+2
|
|
ELSE
|
|
sta &addr,&offset
|
|
txa
|
|
sta &addr+2,&offset
|
|
ENDIF
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
casejmp &A,&B
|
|
cmp #&A
|
|
bne @1
|
|
brl &B
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
cmpl &A,&B
|
|
IF &B='' THEN
|
|
cpx &A+2
|
|
bne @1
|
|
cmp &A
|
|
ELSE
|
|
lda &A+2
|
|
cmp &B+2
|
|
bne @1
|
|
lda &A
|
|
cmp &B
|
|
ENDIF
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
incl &A
|
|
IF &A='a' THEN
|
|
inc a
|
|
bne @1
|
|
inx
|
|
ELSE
|
|
inc &A
|
|
bne @1
|
|
inc &A+2
|
|
ENDIF
|
|
@1
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
decl &A
|
|
IF &A='a' THEN
|
|
cmp #0
|
|
bne @1
|
|
dex
|
|
@1 dec a
|
|
ELSE
|
|
lda &A
|
|
bne @2
|
|
dec &A+2
|
|
@2 dec &A
|
|
ENDIF
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
stzl &A
|
|
stz &A
|
|
stz &A+2
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
subl &A,&B,&C
|
|
lda &A
|
|
sec
|
|
sbc &B
|
|
sta &C
|
|
lda &A+2
|
|
sbc &B+2
|
|
sta &C+2
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
addl &A,&B,&C
|
|
IF &C='' ** &B='' THEN
|
|
clc
|
|
adc &A
|
|
sta &A
|
|
bcc @1
|
|
inc &A+2
|
|
@1
|
|
ELSE
|
|
lda &A
|
|
clc
|
|
adc &B
|
|
sta &C
|
|
lda &A+2
|
|
adc &B+2
|
|
sta &C+2
|
|
ENDIF
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
subw &A,&B,&C
|
|
lda &A
|
|
sec
|
|
sbc &B
|
|
sta &C
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
addw &A,&B,&C
|
|
lda &A
|
|
clc
|
|
adc &B
|
|
sta &C
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
mov &A,&B
|
|
lda &A
|
|
sta &B
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
swap &A,&B
|
|
lda &A
|
|
pha
|
|
lda &B
|
|
sta &A
|
|
pla
|
|
sta &B
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
swapl &A,&B
|
|
swap &A,&B
|
|
swap &A+2,&B+2
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
movl &A,&B
|
|
mov &A,&B
|
|
mov &A+2,&B+2
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
move &A,&B
|
|
mov &A,&B
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
moveword &A,&B
|
|
mov &A,&B
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
movelong &A,&B
|
|
movl &A,&B
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
sublong &A,&B,&C
|
|
subl &A,&B,&C
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
addlong &A,&B,&C
|
|
addl &A,&B,&C
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|
|
|
|
MACRO
|
|
PushZeroPtr &A
|
|
PushZPtr &A
|
|
MEND
|
|
|
|
;---------------------------------------------------------
|