// MASTER /* This KIT reads headers directly from CMS files if no FILEDEF exists */ NEEDS "USINGCMS" GET "NLIBHDR" GLOBAL $( USINGCMS:135 // UUUUUUUUUUUUUUUUUUUUUUUU CHBUF:300; PRSOURCE:310 PPTRACE:327; OPTION:328 FORMTREE:350; PLIST:352 TREEP:367; TREEVEC:368 CHARCODE:390; REPORTCOUNT:391; REPORTMAX:392 SOURCESTREAM:393; SYSPRINT:394; OCODE:395 UPPER:396 // $$$$$ UNASKII:397 // $$$$$ COMPILEAE:245 SAVESPACESIZE:282 $) LET CHARCODE(CH) = CH // THE DEFAULT SETTING OF CHARCODE AND EBCDICTOASCII(CH) = CH=21->#XA, ASKII(CH) AND UNASKII(CH) = CH!TABLE #X00,#X01,#X02,#X03,#X37,#X2D,#X2E,#X2F, #X16,#X05,#X25,#X0B,#X0C,#X0D,#X0E,#X0F, #X10,#X11,#X12,#X13,#X3C,#X3D,#X32,#X26, #X18,#X19,#X3F,#X27,#X1C,#X1D,#X1E,#X1F, #X40,#X5A,#X7F,#X7B,#X5B,#X6C,#X50,#X7D, #X4D,#X5D,#X5C,#X4E,#X6B,#X60,#X4B,#X61, #XF0,#XF1,#XF2,#XF3,#XF4,#XF5,#XF6,#XF7, #XF8,#XF9,#X7A,#X5E,#X4C,#X7E,#X6E,#X6F, #X7C,#XC1,#XC2,#XC3,#XC4,#XC5,#XC6,#XC7, #XC8,#XC9,#XD1,#XD2,#XD3,#XD4,#XD5,#XD6, #XD7,#XD8,#XD9,#XE2,#XE3,#XE4,#XE5,#XE6, #XE7,#XE8,#XE9,#XAD,#XE0,#XBD,#X71,#X6D, #X79,#X81,#X82,#X83,#X84,#X85,#X86,#X87, #X88,#X89,#X91,#X92,#X93,#X94,#X95,#X96, #X97,#X98,#X99,#XA2,#XA3,#XA4,#XA5,#XA6, #XA7,#XA8,#XA9,#X8B,#X4F,#X9B,#X5F,#X07, #X00,#X01,#X02,#X03,#X37,#X2D,#X2E,#X2F, #X16,#X05,#X25,#X0B,#X0C,#X0D,#X0E,#X0F, #X10,#X11,#X12,#X13,#X3C,#X3D,#X32,#X26, #X18,#X19,#X3F,#X27,#X1C,#X1D,#X1E,#X1F, #X40,#X5A,#X7F,#X7B,#X5B,#X6C,#X50,#X7D, #X4D,#X5D,#X5C,#X4E,#X6B,#X60,#X4B,#X61, #XF0,#XF1,#XF2,#XF3,#XF4,#XF5,#XF6,#XF7, #XF8,#XF9,#X7A,#X5E,#X4C,#X7E,#X6E,#X6F, #X7C,#XC1,#XC2,#XC3,#XC4,#XC5,#XC6,#XC7, #XC8,#XC9,#XD1,#XD2,#XD3,#XD4,#XD5,#XD6, #XD7,#XD8,#XD9,#XE2,#XE3,#XE4,#XE5,#XE6, #XE7,#XE8,#XE9,#XAD,#XE0,#XBD,#X71,#X6D, #X79,#X81,#X82,#X83,#X84,#X85,#X86,#X87, #X88,#X89,#X91,#X92,#X93,#X94,#X95,#X96, #X97,#X98,#X99,#XA2,#XA3,#XA4,#XA5,#XA6, #XA7,#XA8,#XA9,#X8B,#X4F,#X9B,#X5F,#X07 AND ASKII(C) = C!TABLE /* EBCDIC 00-07 */ #000, #001, #002, #003, 0, #011, 0, #177, /* EBCDIC 08-0F */ 0, 0, 0, #013, #014, #015, #016, #017, /* EBCDIC 10-17 */ #020, #021, #022, #023, 0, 0, #010, 0, /* EBCDIC 18-1F */ #030, #031, 0, 0, #034, #035, #036, #037, /* EBCDIC 20-27 */ 0, 0, 0, 0, 0, #012, #027, #033, /* EBCDIC 28-2F */ 0, 0, 0, 0, 0, #005, #006, #007, /* EBCDIC 30-37 */ 0, 0, #026, 0, 0, 0, 0, #004, /* EBCDIC 38-3F */ 0, 0, 0, 0, #024, #025, 0, #032, /* EBCDIC 40-47 */ #040, 0, 0, 0, 0, 0, 0, 0, /* EBCDIC 48-4F */ 0, 0, 0, #056, #074, #050, #053, #174, /* EBCDIC 50-57 */ #046, 0, 0, 0, 0, 0, 0, 0, /* EBCDIC 58-5F */ 0, 0, #041, #044, #052, #051, #073, #176, /* EBCDIC 60-67 */ #055, #057, 0, 0, 0, 0, 0, 0, /* EBCDIC 68-6F */ 0, 0, 0, #054, #045, #137, #076, #077, /* EBCDIC 70-77 */ 0, #136, 0, 0, 0, 0, 0, 0, /* EBCDIC 78-7F */ 0, #140, #072, #043, #100, #047, #075, #042, /* EBCDIC 80-87 */ 0, #141, #142, #143, #144, #145, #146, #147, /* EBCDIC 88-8F */ #150, #151, 0, #173, 0, 0, 0, 0, /* EBCDIC 90-97 */ 0, #152, #153, #154, #155, #156, #157, #160, /* EBCDIC 98-9F */ #161, #162, 0, #175, 0, 0, 0, 0, /* EBCDIC A0-A7 */ 0, 0, #163, #164, #165, #166, #167, #170, /* EBCDIC A8-AF */ #171, #172, 0, 0, 0, #133, 0, 0, /* EBCDIC B0-B7 */ 0, 0, 0, 0, 0, 0, 0, 0, /* EBCDIC B8-BF */ 0, 0, 0, 0, 0, #135, 0, 0, /* EBCDIC C0-C7 */ 0, #101, #102, #103, #104, #105, #106, #107, /* EBCDIC C8-CF */ #110, #111, 0, 0, 0, 0, 0, 0, /* EBCDIC D0-D7 */ 0, #112, #113, #114, #115, #116, #117, #120, /* EBCDIC D8-DF */ #121, #122, 0, 0, 0, 0, 0, 0, /* EBCDIC E0-E7 */ #134, 0, #123, #124, #125, #126, #127, #130, /* EBCDIC E8-EF */ #131, #132, 0, 0, 0, 0, 0, 0, /* EBCDIC F0-F7 */ #060, #061, #062, #063, #064, #065, #066, #067, /* EBCDIC F8-FF */ #070, #071, 0, 0, 0, 0, 0, #134 AND UPPER360(CH) = 'a'<=CH<='z' -> CH LOGOR #X40, CH AND UPPER(CH) = UPPER360(CH) // FOR 360/370 COMPILATION LET START(PARM) BE $(1 USINGCMS(0) // UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU SYSPRINT := FINDOUTPUT("SYSPRINT") SELECTOUTPUT(SYSPRINT) WRITES("*NBCPL - RL 8086 Version") $( LET OPT = VEC 20 AND TREESIZE = 5500 OPTION := OPT SAVESPACESIZE := 2 PPTRACE := FALSE PRSOURCE := FALSE FOR I = 0 TO 20 DO OPT!I := FALSE SOURCESTREAM := FINDINPUT("OPTIONS") UNLESS SOURCESTREAM=0 DO $(P LET CH = 0 AND N = 0 SELECTINPUT(SOURCESTREAM) WRITES("*NOPTIONS ") $( CH := RDCH() L: IF CH='*N' LOGOR CH=ENDSTREAMCH BREAK WRCH(CH) IF CH='P' DO N := 1 IF CH='T' DO N := 2 IF CH='C' DO N := 3 IF CH='M' DO N := 4 IF CH='N' DO N := 5 IF CH='O' DO N := 6 IF CH='A' DO CHARCODE := EBCDICTOASCII IF CH='S' DO PRSOURCE := TRUE IF CH='E' DO PPTRACE := TRUE IF CH='L' DO $( TREESIZE := READN() WRITEN(TREESIZE) CH := TERMINATOR GOTO L $) IF CH='Z' DO $( SAVESPACESIZE := READN() WRITEN(SAVESPACESIZE) CH := TERMINATOR GOTO L $) OPTION!N := TRUE $) REPEAT NEWLINE() ENDREAD() $)P REPORTMAX := 20 REPORTCOUNT := 0 SOURCESTREAM := FINDINPUT("SYSIN") IF SOURCESTREAM=0 THEN $( WRITES("*NNO SOURCESTREAM CONNECTED -* * COMPILATION ABORTED") STOP(8) $) SELECTINPUT(SOURCESTREAM) OCODE := FINDOUTPUT("OCODE") IF OCODE=0 DO OCODE := SYSPRINT USINGCMS("BCPLHDR") // UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU $(2 LET COMP(V, TREEMAX) BE $(C LET B = VEC 63 CHBUF := B $(3 TREEP, TREEVEC := V+TREEMAX, V $( LET A = FORMTREE() IF A=0 BREAK WRITEF("*NTREE SIZE %N*N", TREEMAX+TREEVEC-TREEP) IF OPTION!2 DO $( WRITES('AE TREE*N') PLIST(A, 0, 20) NEWLINE() $) UNLESS REPORTCOUNT=0 DO STOP(8) UNLESS OPTION!3 DO $( SELECTOUTPUT(OCODE) COMPILEAE(A) SELECTOUTPUT(SYSPRINT) $) $)3 REPEAT $)C APTOVEC(COMP, TREESIZE) ENDREAD() IF OPTION!4 DO MAPSTORE() WRITES('*NPHASE 1 COMPLETE*N') UNLESS REPORTCOUNT=0 DO STOP(8) STOP(0) $)1 // UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU .