Trailing-Edge
-
PDP-10 Archives
-
decuslib20-06
-
decus/20-153/rpgprm.mac
There is 1 other file named rpgprm.mac in the archive. Click here to see a list.
UNIVERSAL RPGPRM FOR RPGLIB VERSION 1.
SUBTTL PARAMETERS FOR RPGLIB %1 10-JAN-76 /RBC/ACK
;USED TO BE
;COPYRIGHT 1974, 1975, DIGITAL EQUIPMENT CORP., MAYNARD MASS.
;WHEN IT WAS LBLPRM, BUT WAS MODIFIED TO RPGII VERSION BY
;BOB CURRIER.
EDIT==0
VERSION==10B29
.DIRECTIVE .NOBIN
%%LBLP==1 ;TO ASSURE THAT ALL MODULES ARE COMPILED WITH THE
; SAME SWITCHES.
;REVISION HISTORY:
SEARCH INTERM ;DEFINE THE ASSEMBLY SWITCHES.
DEBUG==:DEBUG
SERCH==:SERCH
RPW==:RPW
ISAM==:ISAM
DBMS==:DBMS
MCS==:MCS
STRING==:STRING
EBCMP.==:EBCMP.
MPWCEX==:MPWCEX
TRAILB==:TRAILB
MPWC.S==:MPWC.S
BIS==:BIS
;DEFAULT ANY UNDEFINED ASSEMBLY SWITCHES.
SWSET%==SWSET% ;DEFINE COMPILER'S ASSEMBLY SWITCH WORD.
LIBSW%==LIBSW% ;DEFINE LIBOL'S ASSEMBLY SWITCH WORD.
;ACCUMULATIOR DEFINITIONS:
;NOTE:
; ACCUMULATORS 0, 1, 2, 3 AND 4 SHOULD ALWAYS BE PRESERVED ON
; ANY CALL TO RPGLIB.
S1==1 ;SAVE THESE.
S2==2
S3==3
CNT==12 ;FIELD WIDTH.
CH==5 ;HOLDS A CHARACTER.
T1==CH ;TEMPORARY.
T2==T1+1 ; "
T3==T2+1 ; "
T4==T3+1 ; "
T5==T4+1 ; "
TAC1==5 ;TEMPORARIES - USE THESE NAMES WHEN RENAMEING
TAC2==6 ; THE AC'S OTHERWISE THE ASSEMBLER WILL MESS
TAC3==7 ; THINGS UP.
TAC4==10
TAC5==11
CPTR==T2 ;CONVERSION POINTER.
AC==T3 ;THREE AC'S USED IN NUMERIC CONVERSIONS.
IPTR==13 ;THE INPUT BYTE POINTER.
OPTR==14 ;THE OUTPUT BYTE POINTER.
SW==OPTR ;SWITCHES.
JAC==15 ;HOLDS THE RETURN ADDRESS FOR SUBROUTINES CALLED
; VIA JSP.
PARM==16 ;POINTS TO THE PARAMETERS.
PP==17 ;PUSH DOWN POINTER.
;FLAGS:
LS==(1B1) ;LEADING SIGN FLAG.
LM==(1B2) ;LEADING MINUS FLAG.
IS==(1B3) ;IMBEDDED OR TRAILING SIGN FLAG:
; 0 ==> NONE OR POSITIVE
; 1 ==> NEGATIVE.
OECNT==(1B4) ;ODD OR EVEN COUNT FLAG.
; 0 ==> CNT WAS ODD.
; 1 ==> CNT WAS EVEN.
SUBTTL REGISTERS AND FLAGS FOR BIS
IFE BIS,<XLIST>
IFN BIS,<
; BASIC REGISTER DEFINITIONS
;INSTRUCTION REGS
BIS0==4
BIS1==5
BIS2==6
BIS3==7
BIS4==10
;TEMPS
BIST0==11
BIST1==12
BIST2==13
IFN SW-14,<PRINTX BIS REGISTER ERROR>
IFN JAC-15,<PRINTX BIS REGISTER ERROR>
; MORE MEANINGFUL NAMES FOR THE REGS
BISCH==BIS2 ;TEMP REGISTER USED BY BSET1. AND BSET2.
B.FLAG==BIS0 ;FLAGS
SRCCNT==BIS0 ;SOURCE COUNT
SRCPT==BIS1 ;SOURCE POINTER
DSTCNT==BIS3 ;DESTINATION COUNT
DSTPT==BIS4 ;DESTINATION POINTER
PATRN==BIS0 ;PATTERN
MARKAD==BIS3 ;ADDRESS OF MARK POINTER
BD.FLG==BIS3 ;FLAGS ARE HERE FOR BINARY TO DECIMAL CONVERSION
SRCHI==BIS0 ;HIGH ORDER BITS OF SOURCE BINARY
SRCLO==BIS1 ;LOW ORDER BITS OF SOURCE BINARY NUMBER
DSTHI==BIS3 ;HIGH ORDER BITS OF DESTINATION BINARY NUMBER
DSTLO==BIS4 ;LOW ORDER BITS OF DESTINATION BINARY NUMBER
;FLAGS IN LEFT HALF OF B.FLAG
BFLG.S==400000 ;SIGNIFICANCE FLAG
BFLG.M==100000 ;NEGATIVE FLAG
BFLG.N==200000 ;NON-ZERO FLAG
BFLG.==700000 ;ALL OF THEM
;NEW KL INSTRUCTIONS
OPDEF DADD [114000,,000000] ;DOUBLE ADD
OPDEF DSUB [115000,,000000] ;
OPDEF DMUL [116000,,000000] ;
OPDEF DDIV [117000,,000000] ;
OPDEF DMOVE [120000,,000000]
OPDEF DMOVEM [124000,,000000]
OPDEF DMOVN [121000,,000000]
OPDEF DMOVNM [125000,,000000]
;EXTENDED INSTRUCTION SET OP CODES
OPDEF EXTEND [123000,,000000]
CMPSL==001000 ;COMPARE STRING LESS THAN
CMPSE==002000 ;EQUAL
CMPSLE==003000 ;LESS OR EQUAL
CMPSGE==005000 ;GREATER OR EQUAL
CMPSN==006000 ;NOT EQUAL
CMPSG==007000 ;GREATER
EDIT==004000 ;EDIT
CVTDBO==010000 ;CONVERT DECIMAL TO BINARY OFFSET
CVTDBT==011000 ;TRANSLATED
CVTBDO==012000 ;BINARY TO DECIMAL OFFSET
CVTBDT==013000 ;TRANSLATED
MOVSO==014000 ;MOVE STRING OFFSET
MOVST==015000 ;TRANSLATED
MOVSLJ==016000 ;LEFT JUSTIFIED
MOVSRJ==017000 ;RIGHT JUSTIFIED
; E0 BLOCK INDICES
E0.INS==0 ;INSTRUCTION CODE
E0.OFF==0 ;OFFSET
E0.TBL==0 ;TRANSLATION TABLE ADDRESS
E0.FIL==1 ;FILL CHARACTER
E0.FLT==2 ;FLOAT CHARACTER
E0.$==3 ;DOLLAR SIGN
E0.COM==4 ;COMMA
E0..==5 ;PERIOD
E0.BL==6 ;BLANK
E0.0==7 ;ZERO
E0.PL==10 ;PLUS
E0.MI==11 ;MINUS
E0.C==12 ;"C"
E0.R==13 ;"R"
E0.D==14 ;"D"
E0.B==15 ;"B"
;TRANSLATION TABLE CODES
T.SBIT==400000 ;SET S AND N FLAGS
T.ABRT==100000 ;ABORT
T.MCLR==200000 ;CLEAR M FLAG
T.MSET==300000 ;SET M FLAG
T.ABIS==1000 ;ABORT IF SIGNIFICANCE IS ON (ONLY FOR CVDBO/T )
> ;END OF BIS
LIST
;MACROS
;THIS MACRO IS USED BY THE OTHER MACROS TO GENERATE "LDB AC1,[POINT ?,?(AC2),?]"
; WHERE THE ?'S ARE DETERMINED BY THE STRUCTURE OF EASTBL, WHERE THE EXTERNALS
; ?'FLD'? ARE DEFINED.
DEFINE PICKUP (FLD,N,AC1,AC2,%LH,%RH,%A,%B)<
.XCREF
;;DO DEFAULTS THIS WAY SINCE MACRO DOESN'T WORK RIGHT.
%A==N
IFB <N>,<%A==6>
%B==AC1
IFB <AC1>,<%B==CH>
%C==AC2
IFB <AC2>,<%C==%B>
%B==%B&17
%LH==S'FLD'L.##
%RH==S'FLD'R.##
IFE %A-7,<%LH==A'FLD'L.##
%RH==A'FLD'R.##>
IFE %A-^D9,<%LH==E'FLD'L.##
%RH==E'FLD'R.##>
LDB %C, [XWD %LH+%B,%RH]
.CREF
LIST
> ;END OF DEFINE PICKUP.
COMMENT \
MACRO TO DETERMINE IF A CHARACTER REPRESENTS A DIGIT WITH AN OVERPUNCHED "-".
CALL:
SIGN N,AC1,AC2;
WHERE:
N=6 ==> THE INPUT CHAR IS SIXBIT
N=7 ==> THE INPUT CHAR IS ASCII
N=9 ==> THE INPUT CHAR IS EBCDIC
(AC1) = THE INPUT CHAR
(AC2) = 1 IF THE CHAR HAS AN OVERPUNCHED "-", OTHERWISE 0.
DEFAULTS:
N: 6 (OMITTED OR NEITHER 7 NOR 9)
AC1: CH (THIS IS NOT NECESSARILY THE CH DEFINED IN LBLPRM)
AC2: AC1
\
DEFINE SIGN (N,AC1,AC2)<PICKUP SGN,N,AC1,AC2
PURGE %A,%B,%C
>
COMMENT \
MACRO TO CONVERT A CHARACTER TO A DIGIT.
CALL:
CVTNM N,AC1,AC2;
WHERE:
N=6 ==> THE INPUT CHAR IS SIXBIT
N=7 ==> THE INPUT CHAR IS ASCII
N=9 ==> THE INPUT CHAR IS EBCDIC
(AC1) = THE INPUT CHAR
(AC2) = THE DIGIT
DEFAULTS:
N: 6 (OMITTED OR NEITHER 7 NOR 9)
AC1: CH (THIS IS NOT NECESSARILY THE CH DEFINED IN LBLPRM)
AC2: AC1
\
DEFINE CVTNM (N,AC1,AC2)<
PICKUP DGT,N,AC1,AC2
TRNN %C,IBNCH.##
TRZE %C,SPCCH.##
CAIE %C,3
TRZA %C,777600
TRZ %C,-1
IFE N-6,<ADDI %C,20>
IFE N-7,<ADDI %C,60>
IFE N-^D9,<ADDI %C,360>
PURGE %C
>
COMMENT \
MACRO TO CONVERT A CHARACTER TO A DIGIT AND SET BIT 0 TO 1 IF THE CHARACTER
REPRESENTS A DIGIT WITH AN OVERPUNCHED "-".
CALL:
CVTSNM N,AC1,AC2;
WHERE:
N=6 ==> THE INPUT CHAR IS SIXBIT
N=7 ==> THE INPUT CHAR IS ASCII
N=9 ==> THE INPUT CHAR IS EBCDIC
(AC1) = THE INPUT CHAR
(AC2) = THE DIGIT
DEFAULTS:
N: 6 (OMITTED OR NEITHER 7 NOR 9)
AC1: CH (THIS IS NOT NECESSARILY THE CH DEFINED IN LBLPRM)
AC2: AC1
\
DEFINE CVTSNM (N,AC1,AC2)<
PICKUP SDG,N,AC1,AC2;
TRNE %C,IBNCH.##
TLOA %C,(1B0)
TRZE %C,SPCCH.##
CAIE %C,3
TRZA %C,777600
TRZ %C,-1
IFE N-6,<ADDI %C,20>
IFE N-7,<ADDI %C,60>
IFE N-^D9,<ADDI %C,360>
PURGE %C
>
END