564 lines
9.3 KiB
Plaintext
564 lines
9.3 KiB
Plaintext
; =====> SASM.MAC
|
||
;***************************************
|
||
;* TIPC Scheme '84 Assembler Macros *
|
||
;* (C) Copyright 1984,1984 by Texas *
|
||
;* Instruments Incorporated. *
|
||
;* All rights reserved. *
|
||
;* *
|
||
;* Date Written: 14 May 1984 *
|
||
;* Last Modification: 1 April 1985 *
|
||
;***************************************
|
||
; Register equates
|
||
R0 equ 0
|
||
R1 equ 4
|
||
R2 equ 8
|
||
R3 equ 12
|
||
R4 equ 16
|
||
R5 equ 20
|
||
R6 equ 24
|
||
R7 equ 28
|
||
R8 equ 32
|
||
R9 equ 36
|
||
R10 equ 40
|
||
R11 equ 44
|
||
R12 equ 48
|
||
R13 equ 52
|
||
R14 equ 56
|
||
R15 equ 60
|
||
R16 equ 64
|
||
R17 equ 68
|
||
R18 equ 72
|
||
R19 equ 76
|
||
R20 equ 80
|
||
R21 equ 84
|
||
R22 equ 88
|
||
R23 equ 92
|
||
R24 equ 96
|
||
R25 equ 100
|
||
R26 equ 104
|
||
R27 equ 108
|
||
R28 equ 112
|
||
R29 equ 116
|
||
R30 equ 120
|
||
R31 equ 124
|
||
R32 equ 128
|
||
R33 equ 132
|
||
R34 equ 136
|
||
R35 equ 140
|
||
R36 equ 144
|
||
R37 equ 148
|
||
R38 equ 152
|
||
R39 equ 156
|
||
R40 equ 160
|
||
R41 equ 164
|
||
R42 equ 168
|
||
R43 equ 172
|
||
R44 equ 176
|
||
R45 equ 180
|
||
R46 equ 184
|
||
R47 equ 188
|
||
R48 equ 192
|
||
R49 equ 196
|
||
R50 equ 200
|
||
R51 equ 204
|
||
R52 equ 208
|
||
R53 equ 212
|
||
R54 equ 216
|
||
R55 equ 220
|
||
R56 equ 224
|
||
R57 equ 228
|
||
R58 equ 232
|
||
R59 equ 236
|
||
R60 equ 240
|
||
R61 equ 244
|
||
R62 equ 248
|
||
R63 equ 252
|
||
|
||
; Instruction macros
|
||
COPY_ macro dest,src
|
||
db 0,dest,src
|
||
endm
|
||
|
||
LD_CON_ macro dest,numb
|
||
db 1,dest,numb
|
||
endm
|
||
|
||
LD_IMM_ macro dest,val
|
||
db 2,dest,val
|
||
endm
|
||
|
||
LD_NIL_ macro dest
|
||
db 3,dest
|
||
endm
|
||
|
||
LD_LCL_ macro dest,entry
|
||
db 4,dest,entry
|
||
endm
|
||
|
||
LD_GLOBAL_ macro dest,src
|
||
db 7,dest,src
|
||
endm
|
||
|
||
LD_FLUID_ macro dest,src ; load fluid
|
||
db 8,dest,src
|
||
endm
|
||
|
||
LD_S_ macro dest,src,off
|
||
temp_ld = offset off
|
||
temp_ld = temp_ld/3
|
||
db 9,dest,src,temp_ld
|
||
endm
|
||
|
||
LD_L_ macro dest,src,off
|
||
temp_ld = offset off
|
||
temp_ld = temp_ld/3
|
||
db 10,dest,src
|
||
dw temp_ld
|
||
endm
|
||
|
||
LD_R_ macro dest,src,off
|
||
db 11,dest,src,off
|
||
endm
|
||
|
||
LD_GL_R_ macro dest,src
|
||
db 27,dest,src
|
||
endm
|
||
|
||
BIND_FL_ macro const,src ; bind fluid variable
|
||
db 29,const,src
|
||
endm
|
||
|
||
DEFINE_ macro dest,const
|
||
db 31,dest,const
|
||
endm
|
||
|
||
DEF_ENV_ macro sym,val,env
|
||
db 220,sym,val,env
|
||
endm
|
||
|
||
CLOSE_ macro dest,lbl,nargs
|
||
local x
|
||
db 60,dest
|
||
dw lbl-x
|
||
db nargs
|
||
x equ $
|
||
endm
|
||
|
||
LD_FL_R_ macro dest,src ; load fluid from symbol in register
|
||
db 63,dest,src ; temporary instruction?
|
||
endm
|
||
|
||
LD_CAR_ macro dest,src
|
||
db 64,dest,src
|
||
endm
|
||
|
||
LD_CDR_ macro dest,src
|
||
db 65,dest,src
|
||
endm
|
||
|
||
LD_CAAR_ macro dest,src
|
||
db 66,dest,src
|
||
endm
|
||
|
||
LD_CADR_ macro dest,src
|
||
db 67,dest,src
|
||
endm
|
||
|
||
LD_CDAR_ macro dest,src
|
||
db 68,dest,src
|
||
endm
|
||
|
||
LD_CDDR_ macro dest,src
|
||
db 69,dest,src
|
||
endm
|
||
|
||
LD_CAAAR_ macro dest,src
|
||
db 70,dest,src
|
||
endm
|
||
|
||
LD_CAADR_ macro dest,src
|
||
db 71,dest,src
|
||
endm
|
||
|
||
LD_CADAR_ macro dest,src
|
||
db 72,dest,src
|
||
endm
|
||
|
||
LD_CADDR_ macro dest,src
|
||
db 73,dest,src
|
||
endm
|
||
|
||
LD_CDAAR_ macro dest,src
|
||
db 74,dest,src
|
||
endm
|
||
|
||
LD_CDADR_ macro dest,src
|
||
db 75,dest,src
|
||
endm
|
||
|
||
LD_CDDAR_ macro dest,src
|
||
db 76,dest,src
|
||
endm
|
||
|
||
LD_CDDDR_ macro dest,src
|
||
db 77,dest,src
|
||
endm
|
||
|
||
LD_CADDDR_ macro dest,src
|
||
db 78,dest,src
|
||
endm
|
||
|
||
CONS_ macro dest,car,cdr
|
||
db 79,dest,car,cdr
|
||
endm
|
||
|
||
SETCAR_ macro dest,src
|
||
db 20,dest,src
|
||
endm
|
||
|
||
SETCDR_ macro dest,src
|
||
db 21,dest,src
|
||
endm
|
||
|
||
ST_S_ macro dest,src,off
|
||
db 17,dest,src,offset off
|
||
endm
|
||
|
||
ST_L_ macro dest,src,off
|
||
db 18,dest,src
|
||
dw offset off
|
||
endm
|
||
|
||
ST_R_ macro dest,src,off
|
||
db 19,dest,src,off
|
||
endm
|
||
|
||
SETREF_ macro val,ref
|
||
db 22,val,ref
|
||
endm
|
||
|
||
JMP_S_ macro label
|
||
db 32,label-$-1
|
||
endm
|
||
|
||
JMP_L_ macro label
|
||
db 33
|
||
dw label-$-2
|
||
endm
|
||
|
||
JNIL_S_ macro reg,label
|
||
db 34,reg,label-$-1
|
||
endm
|
||
|
||
JNIL_L_ macro reg,label
|
||
db 35,reg
|
||
dw label-$-2
|
||
endm
|
||
|
||
JNNIL_S_ macro reg,label
|
||
db 36,reg,label-$-1
|
||
endm
|
||
|
||
JNNIL_L_ macro reg,label
|
||
db 37,reg
|
||
dw label-$-2
|
||
endm
|
||
|
||
JATOM_S_ macro reg,label
|
||
db 38,reg,label-$-1
|
||
endm
|
||
|
||
JATOM_L_ macro reg,label
|
||
db 39,reg
|
||
dw label-$-2
|
||
endm
|
||
|
||
JNATOM_S_ macro reg,label
|
||
db 40,reg,label-$-1
|
||
endm
|
||
|
||
JNATOM_L_ macro reg,label
|
||
db 41,reg
|
||
dw label-$-2
|
||
endm
|
||
|
||
DEREF_ macro dest ; (deref x)
|
||
db 46,dest
|
||
endm
|
||
|
||
REF_ macro dest ; (ref x)
|
||
db 47,dest
|
||
endm
|
||
|
||
CALL_ macro label,dl_lvl,dl_heap
|
||
db 48
|
||
dw label-$-4
|
||
db dl_lvl,dl_heap
|
||
endm
|
||
|
||
CALL_TR_ macro label,dl_lvl,dl_heap
|
||
db 49
|
||
dw label-$-4
|
||
db dl_lvl,dl_heap
|
||
endm
|
||
|
||
CALL_CC_ macro label,dl_lvl,dl_heap
|
||
db 50
|
||
dw label-$-4
|
||
db dl_lvl,dl_heap
|
||
endm
|
||
|
||
CALL_CT_ macro label,dl_lvl,dl_heap
|
||
db 51
|
||
dw label-$-4
|
||
db dl_lvl,dl_heap
|
||
endm
|
||
|
||
CALL_CL_ macro reg,nargs
|
||
db 52,reg,nargs
|
||
endm
|
||
|
||
CLOSURP_ macro dest ; (closure? obj)
|
||
db 129,dest
|
||
endm
|
||
|
||
FLUID_P_ macro dest ; (fluid-bound? obj)
|
||
db 134,dest
|
||
endm
|
||
|
||
STRINGP_ macro dest ; (string? obj)
|
||
db 143,dest
|
||
endm
|
||
|
||
SYMBOLP_ macro dest ; (symbol? obj)
|
||
db 144,dest
|
||
endm
|
||
|
||
MINUS_ macro dest ; (minus n)
|
||
db 151,dest
|
||
endm
|
||
|
||
A_S_ macro dest ; (ascii->symbol n)
|
||
db 160,dest
|
||
endm
|
||
|
||
S_A_ macro dest ; (symbol->ascii sym)
|
||
db 161,dest
|
||
endm
|
||
|
||
ADD_ macro dest,src
|
||
db 80,dest,src
|
||
endm
|
||
|
||
ADDI_ macro dest,imm
|
||
db 81,dest,imm
|
||
endm
|
||
|
||
SUB_ macro dest,src
|
||
db 82,dest,src
|
||
endm
|
||
|
||
MUL_ macro dest,src
|
||
db 83,dest,src
|
||
endm
|
||
|
||
MULI_ macro dest,imm
|
||
db 84,dest,imm
|
||
endm
|
||
|
||
DIV_ macro dest,src
|
||
db 85,dest,src
|
||
endm
|
||
|
||
DIVI_ macro dest,imm
|
||
db 86,dest,imm
|
||
endm
|
||
|
||
MOD_ macro dest,src
|
||
db 88,dest,src
|
||
endm
|
||
|
||
JEQ_S_ macro reg1,reg2,label
|
||
db 42,reg1,reg2,label-$-1
|
||
endm
|
||
|
||
JEQ_L_ macro reg1,reg2,label
|
||
db 43,reg1,reg2
|
||
dw label-$-2
|
||
endm
|
||
|
||
JNEQ_S_ macro reg1,reg2,label
|
||
db 44,reg1,reg2,label-$-1
|
||
endm
|
||
|
||
JNEQ_L_ macro reg1,reg2,label
|
||
db 45,reg1,reg2
|
||
dw label-$-2
|
||
endm
|
||
|
||
EQ_ macro n1,n2
|
||
db 94,n1,n2
|
||
endm
|
||
|
||
NE_ macro n1,n2
|
||
db 97,n1,n2
|
||
endm
|
||
|
||
LT_ macro n1,n2
|
||
db 92,n1,n2
|
||
endm
|
||
|
||
GT_ macro n1,n2
|
||
db 95,n1,n2
|
||
endm
|
||
|
||
LE_ macro n1,n2
|
||
db 93,n1,n2
|
||
endm
|
||
|
||
GE_ macro n1,n2
|
||
db 96,n1,n2
|
||
endm
|
||
|
||
EQ_Z_ macro dest ; (=0 n)
|
||
db 146,dest
|
||
endm
|
||
|
||
LT_Z_ macro dest ; (<0 n)
|
||
db 147,dest
|
||
endm
|
||
|
||
GT_Z_ macro dest ; (>0 n)
|
||
db 148,dest
|
||
endm
|
||
|
||
ABS_ macro dest ; (abs n)
|
||
db 149,dest
|
||
endm
|
||
|
||
FLOOR_ macro dest ; (floor n)
|
||
db 152,dest
|
||
endm
|
||
|
||
FLOAT_ macro dest ; (float n)
|
||
db 150,dest
|
||
endm
|
||
|
||
GENSYM_ macro dest ; (gensym sym)
|
||
db 162,dest
|
||
endm
|
||
|
||
EXPLODE_ macro dest ; (explode sym)
|
||
db 163,dest
|
||
endm
|
||
|
||
IMPLODE_ macro dest ; (implode list)
|
||
db 164,dest
|
||
endm
|
||
|
||
LENGTH_ macro dest ; (length list)
|
||
db 165,dest
|
||
endm
|
||
|
||
LAST_PR_ macro dest ; (last-pair list)
|
||
db 166,dest
|
||
endm
|
||
|
||
POP_ macro dest
|
||
db 24,dest
|
||
endm
|
||
|
||
PUSH_ macro dest
|
||
db 25,dest
|
||
endm
|
||
|
||
DROP_ macro count
|
||
db 26,count
|
||
endm
|
||
|
||
EXECUTE_ macro code
|
||
db 58,code
|
||
endm
|
||
|
||
|
||
EXIT_ macro ; restore (return from call)
|
||
db 59
|
||
endm
|
||
|
||
APPLY_ macro ftn,arg ; apply funtion to args
|
||
db 56,ftn,arg
|
||
endm
|
||
|
||
APPLYTR_ macro ftn,arg ; apply funtion to args-tail recursive
|
||
db 57,ftn,arg
|
||
endm
|
||
|
||
CB_ALLOC_ macro dest ; allocate code block
|
||
db 172,dest
|
||
endm
|
||
|
||
ST_CONST_ macro src,cb,offset ; store constant
|
||
db 173,src,cb,offset
|
||
endm
|
||
|
||
ST_BYTE_ macro src,cb,offset ; store code byte
|
||
db 174,src,cb,offset
|
||
endm
|
||
|
||
OPEN_ macro file,mode ; open I/O port
|
||
db 176,file,mode
|
||
endm
|
||
|
||
CLOSEP_ macro file ; close I/O port
|
||
db 177,file
|
||
endm
|
||
|
||
PRIN1_ macro dest,port ; print s-expression
|
||
db 178,dest,port
|
||
endm
|
||
|
||
PRINC_ macro dest,port ; print s-expression
|
||
db 179,dest,port
|
||
endm
|
||
|
||
PRINT_ macro dest,port ; print s-expression
|
||
db 180,dest,port
|
||
endm
|
||
|
||
NEWLINE_ macro port ; print newline
|
||
db 181,port
|
||
endm
|
||
|
||
READ_ macro dest ; read s-expression
|
||
db 182,dest
|
||
endm
|
||
|
||
FASL_ macro dest ; fast load
|
||
db 191,dest
|
||
endm
|
||
|
||
HALT_ macro ; return to MS-DOS
|
||
db 248
|
||
endm
|
||
|
||
GC_ macro ; garbage collect
|
||
db 249
|
||
endm
|
||
|
||
PTIME_ macro ; display current time
|
||
db 250
|
||
endm
|
||
|
||
S_RESET_ macro ; scheme-reset
|
||
db 252
|
||
endm
|
||
|
||
CLR_REG_ macro ; clear registers
|
||
db 253
|
||
endm
|
||
|
||
DEBUG_ macro ; begin debug mode
|
||
db 255
|
||
endm
|
||
|
||
|