.'$"0 (+-*/) FLAG LINE SKIP '. ** MACROS TO MAP FLUB-LANGUAGE INTO PDP-11 ASSEMBLY ** "F4$ ** THIS IS AN INPUT-FILE FOR STAGE2 ** $ ** AUTHOR: PETER H. HEINRICH * VERSION 03 OF APR-74 ** IF ' EQ ' SKIP '. "F50$ $ IF ' NE ' SKIP '. "F51$ $ ' ' = '. MOV "10."30,"10."20;$ $ ' ' = ' '. MOV "30."40,"10."20;$ $ ' ' = ' + 0. MOV "10."30,"10."20;$ $ ' ' = ' + '. IF "40 EQ "20 SKIP 4$ IF "30 EQ "20 SKIP 1$ MOV "10."30,"10."20;$ ADD "10."40,"10."20;$ "F9$ ADD "10."30,"10."20;$ $ ' ' = ' - '. IF "40 EQ "20 SKIP 4$ IF "30 EQ "20 SKIP 1$ MOV "10."30,"10."20;$ SUB "10."40,"10."20;$ "F9$ SUB "10."30,"10."20;$ NEG "10."20;$ $ ' ' = ' * '. .IF DF PDP40 MOV "10."30,R1;$ MUL "10."40,R1;$ MOV R1,"10."20;$ .IFF MOV "10."30,(EAE)+;$ MOV "10."40,(EAE);$ MOV -(EAE),"10."20;$ .ENDC $ ' ' = ' / '. .IF DF PDP40 CLR R0;$ MOV "10."30,R1;$ DIV "10."40,R0;$ MOV R0,"10."20;$ .IFF MOV "10."30,(EAE);$ CLR -(EAE);$ MOV "10."40,-(EAE);$ ADD #4,EAE;$ MOV (EAE),"10."20;$ .ENDC $ STO ' = '. MOV PTR."10,R0;$ ADD BASE,R0;$ MOVB FLG."20,(R0)+;$ MOVB VAL."20,(R0)+;$ MOV PTR."20,(R0);$ $ GET ' = '. MOV PTR."20,R0;$ ADD BASE,R0;$ MOVB (R0)+,FLG."10;$ MOVB (R0)+,VAL."10;$ MOV (R0),PTR."10;$ $ TO ' BY '. MOV #"00,PTR."20;$ JMP M"10;$ M"0000:;$ $ RETURN BY '. MOV PTR."10,R0;$ DEC R0;$ ASL R0;$ JMP @JTAB(R0);$ $ TO '. JMP M"10;$ $ TO ' IF VAL ' = '. CMPB VAL."20,VAL."30;$ BNE .+6;$ JMP M"10;$ $ TO ' IF VAL ' NE '. CMPB VAL."20,VAL."30;$ BEQ .+6;$ JMP M"10;$ $ TO ' IF ' ' = '. CMP "20."30,"20."40;$ BNE .+6;$ JMP M"10;$ $ TO ' IF ' ' NE '. CMP "20."30,"20."40;$ BEQ .+6;$ JMP M"10;$ $ TO ' IF ' ' GE '. CMP "20."30,"20."40;$ BMI .+6;$ JMP M"10;$ $ VAL ' = CHAR. MOVB (LBR)+,VAL."10;$ $ CHAR = VAL '. MOV VAL."10,R0;$ JSR PC,IWRCH;$ MOV R1,FLG."10;$ $ READ NEXT '. MOV VAL."10,R0;$ JSR PC,READ;$ MOV R1,FLG."10;$ $ WRITE NEXT '. MOV VAL."10,R0;$ JSR PC,WRITE;$ MOV R1,FLG."10;$ $ LOC '. .PAGE;$ M"10:;$ $ REWIND '. MOV VAL."10,R0;$ JSR PC,CLOSE;$ CLR FLG."10;$ $ STOP. RTS PC;$ $ MESSAGE ' TO '. MOV #"20,R0;$ JSR R5,ERRMSG;$ .ASCIZ /"10/;$ .EVEN;$ $ END PROGRAM. .RADIX 8;$ .GLOBL ENDST2;$ ENDST2:;$ .LIST TTM;$ .END;$ "F0$ $ FDEFINE '. "10"17$ FLG."10: 0 ;FLG-REGISTER NR "10;$ "F8$ $ VDEFINE '. "10"17$ VAL."10: 0 ;VAL-REGISTER NR "10;$ "F8$ $ PDEFINE '. "10"17$ PTR."10: 0 ;PTR-REGISTER NR "10;$ "F8$ $ GDEFINE '. "10"17$ .GLOBL PTR."10;$ PTR."10: 0 ;GLOBAL PTR-REGISTER NR "10;$ "F8$ $$ .TITLE STG2M. ; ; PART B OF STAGE2 (THE MACRO PROCESSOR) ; ; AUTHOR: WILLIAM.M.WAITE, UNIV.OF COLORADO. ; ; MAPPING INTO PDP-11 ASSEMBLY LANGUAGE BY PETER H. HEINRICH, ; UNIVERSITY OF KARLSRUHE, GERMANY. ; .SBTTL SUBROUTINE STAGE2. .IDENT /EDIT03/;. .MCALL .REGDEF .REGDEF ; ; ; PDP-11/40 & 45 : DEFINE SYMBOL "PDP40". PDP40=0 ; PDP-11/20 WITH EAE : DO NOT DEFINE "PDP45". ; ALL OTHERS: SUBSTITUTE MUL- & DIV-MACROS BY SOFTWARE-SUBROUTINES. ; ANYONE: READ W.M.WAITE'S BOOK: "IMPLEMENTING SOFTWARE FOR NON-NUMERIC ; APPLICATIONS", PRENTICE-HALL, 1973. ; ; .GLOBL READ,IWRCH,WRITE,CLOSE,ERRMSG EAE=R2;. BASE=R3;. LBR=R4;. LBW=R5;. ;. .RADIX 10;. .NLIST TTM;. FDEFINE 456789ABCDEFGHIJKLMNOPQRSTUVWXYZ. DEFINE FLAG REGISTERS VDEFINE ABCDEFGHIJKLMNOPQRSTUVWXYZ. DEFINE VAL REGISTERS PDEFINE 02346ABCDEFGHIJKLMNOPQRSTUVWXYZ. DEFINE PTR REGISTERS (LOCAL) GDEFINE 89. DEFINE PTR REGISTERS (GLOBAL) ;. JTAB: M100,M200,M300,M400,M500,M600,M700,M800,M900,M1000;. M1100,M1200,M1300,M1400,M1500,M1600,M1700,M1800;. ;. .GLOBL STG2M STG2M: ;ENTRY.