perm filename C[CAR,BGB] blob
sn#016000 filedate 1972-12-20 generic text, type T, neo UTF8
00100 ;ALTERNATE PDP-10 MNEMONICS.
00200 DEFINE O(A,B){OPDEF A[B]}
00300 O LIP,HLR↔O LAP,HRR↔O DIP,HRLM↔O DAP,HRRM
00400 O ZIP,HRRZS↔O ZAP,HLLZS↔O WIP,HRROS↔O WAP,HRRZS
00500 O CAR,HLRZ↔O LIPI,HRLI↔O LAPI,HRRI↔O DIPZ,HRLZM
00600 O CDR,HRRZ↔O LACI,MOVEI↔O SLACI,MOVSI↔O DAPZ,HRRZM
00700 O LAC,MOVE↔O LACN,MOVN↔O LACM,MOVM↔O SLAC,MOVS
00800 O DAC,MOVEM↔O DACN,MOVNM↔O DACM,MOVMM↔O SDAC,MOVSM
00900 O NIP,HLRE↔O NAP,HRRE↔O NIM,HRREI↔O GO,JRST
01000 O FLOAT,FSC 233↔O FLO,FSC 225↔O FIXX,FIX 233000
01100
01200 ;SAIL LIKE SUBROUTINE LINKAGE.
01300 ↓P←←17
01400 DEFINE SUBR(NAME){INTERN NAME↔↓NAME: ;}
01500 DEFINE CALL(NAME,X1,X2,X3,X4){
01600 IFDIF <> <X1> {PUSH 17,X1↔IFDIF <> <X2> {PUSH 17,X2
01700 IFDIF <> <X3> {PUSH 17,X3↔IFDIF <> <X4> {PUSH 17,X4}}}}
01800 PUSHJ 17,NAME}
01900 DEFINE ARG1<-1(17)>↔DEFINE ARG2<-2(17)>
02000 DEFINE ARG3<-3(17)>↔DEFINE ARG4<-4(17)>
02100 DEFINE SETQ(VAR,LIST){CALL(LIST)↔DAC 1,VAR}
02200
02300 ;RETURN FROM AN N-ARGUMENT SUBROUTINE CALL.
02400 DEFINE POP0J <POPJ 17,>
02500 ↓POP1J.:SUB 17,[XWD 2,2]↔GO@2(17)↔DEFINE POP1J<GO POP1J.>
02600 ↓POP2J.:SUB 17,[XWD 3,3]↔GO@3(17)↔DEFINE POP2J<GO POP2J.>
02700 ↓POP3J.:SUB 17,[XWD 4,4]↔GO@4(17)↔DEFINE POP3J<GO POP3J.>
02800 ↓POP4J.:SUB 17,[XWD 5,5]↔GO@5(17)↔DEFINE POP4J<GO POP4J.>
02900
03000 ;ACCUMULATOR AND TEMPORARY DATA MANAGEMENT.
03100 FOR @$ I←0,17{↓AC$I:0↔}
03200 DEFINE SAVAC $(N){LAC[XWD 2,AC2]↔BLT AC$N}
03300 DEFINE GETAC (N){LAC[XWD AC2,2]↔BLT N}
03400 DEFINE ACCUMULATORS(LIST){ACPTR←←2
03500 FOR AC⊂(LIST)<AC←ACPTR↔ACPTR←←ACPTR+1↔>}
03600 DEFINE DECLARE (LIST){
03700 FOR VARNAM⊂(LIST)<VARNAM: 0↔>}
03800
03900 ;FATAL ERROR MESSAGE.
04000 DEFINE FATAL(STR){PUSHJ 17,FATAL.↔ASCIZ/STR/}
04100 FATAL.:OUTSTR[BYTE(7)15,12,106,101,124↔"AL - "⊗1↔0]
04200 OUTSTR @(17)↔INCHRW↔GO .-1↔LIT
04300 DEFINE CRLF{OUTSTR[BYTE(7)15,12]}