mirror of
https://github.com/PDP-10/its.git
synced 2026-02-07 17:01:19 +00:00
118 lines
1.9 KiB
Plaintext
Executable File
118 lines
1.9 KiB
Plaintext
Executable File
; MACROS - MIDAS macros for ITS
|
|
|
|
|
|
IF2 .INEOF ; only assemble on pass 1
|
|
|
|
define tellversion
|
|
if1 [
|
|
.tyo6 .ifnm1
|
|
printx " "
|
|
.tyo6 .ifnm2
|
|
printx " Included in this assembly
|
|
"]
|
|
termin
|
|
|
|
tellversion
|
|
|
|
|
|
SUBTTL Definitions
|
|
|
|
; Macro to define registers
|
|
define register name
|
|
if1 [
|
|
name=:.reg.
|
|
.reg.==.reg.+1
|
|
]
|
|
termin
|
|
|
|
.reg.==0
|
|
|
|
|
|
; Register definitions
|
|
register F ; program flags
|
|
register P ; pdl ptr
|
|
register T ; temporaries
|
|
register T1 ; (not saved by uuos)
|
|
register T2
|
|
register A ; A-E saved by subrs
|
|
register B
|
|
register C
|
|
register D
|
|
register E
|
|
|
|
; Define acs for .I and .F
|
|
A0==:T
|
|
A1==:T1
|
|
A2==:T2
|
|
|
|
TT==:T1 ; for using other MACRO packages
|
|
|
|
; Common byte-pointer LH's
|
|
$opcod==:331100 ; Instruction op-code
|
|
$acfld==:270400 ; Instruction AC field
|
|
|
|
|
|
; .BREAK 12, codes (as defined by DDT)
|
|
..rcmd==:5 ; read command line
|
|
..scmd==:400005 ; set command line
|
|
..rrnd==:14 ; read ..URANDM
|
|
..srnd==:400014 ; set ..URANDM
|
|
|
|
|
|
EQUALS BEGIN,.BEGIN ; BEGIN looks better than .BEGIN
|
|
EQUALS VAR,.SCALAR ; Use VAR for vectors and scalars
|
|
|
|
|
|
; Macro to print on tty during assembly
|
|
define inform a,b,c,d,e,f,g
|
|
printx á!b!c!d!e!f!g
|
|
Š
|
|
termin
|
|
|
|
|
|
; Macro to define bit names for use with ac F.
|
|
define flag x
|
|
if1 [
|
|
ife %f.&777777, .ERR Too many flags declared
|
|
%f!x==%f.
|
|
.c"%f.==%f._1
|
|
]
|
|
termin
|
|
|
|
%f.==1 ; for defining flags in RH of F
|
|
%f==525252 ; for DDT's bit typeout mode
|
|
|
|
|
|
; Macro to define channel no.s
|
|
define channel name
|
|
if1 [
|
|
name==:.chnl.
|
|
.chnl.==.chnl.+1
|
|
]
|
|
termin
|
|
|
|
.chnl.==1
|
|
|
|
|
|
; Macro to produce string constant
|
|
define string &x&
|
|
440700,,[ascii x] ? .length x termin
|
|
|
|
|
|
; Macro to simulate KL10's ADJSP instruction
|
|
define adjsp sp,amt
|
|
ifl amt, sub sp,[-amt,,-amt]
|
|
.else [ add sp,[amt,,amt]
|
|
jumpl sp,.+2
|
|
.suset [.sipirq,,[%pipdl]]
|
|
]
|
|
termin
|
|
|
|
|
|
; Macro to output string constants
|
|
define sout ch,ctrl,&s&
|
|
move t1,[440700,,[ascii s]]
|
|
movei t2,.length s
|
|
$call siot,[ch,t1,t2][][ctrl]
|
|
.lose %lssys
|
|
termin
|