File COMOS8.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/ OSALGC. S.F.OCT 1974 -30-
/ OVERLAY TAPE FOR ALGOL UNDER OS/8
/ ASSEMBLED CODE OVERLAYS ALGOL COMPILER SERIES 30
/ ALLOWS ANY OS8 ONE PAGE HANDLER FOR INPUT
/ OR OUTPUT. SCRATCH BLOCKS 40 + 41 USED TO HOLD THIS 
/ DURING RUNTIME, THUS CORE MUST BE SAVED BEFORE
/ THE COMPILER IS STARTED, AS THE FIRST OPERATION
/ IS ONCE ONLY CODE TO SAVE PART OF OVERLAY.

/ IF FILE STRUCTURED DEVICES ARE SPECIFIED, AND NO
/ EXTENSION GIVEN, IT ASSUMES THE FOLLOWING:
/ INPUT FILE EXTENSION	.AL
/ OUTPUT FILE EXTENSION	.AC
/ DOES NOT ALLOW OUTPUT EXTENSION	.AL
/ DOES ALLOW OUTPUT FILE LENGTH TO BE SPECIFIED
/ AND MULTIPLE INPUT FILES
/	E.G.	ALPROG[5]<PROG1,PROG2
/ WILL COMPILE	PROG1 + PROG2	(OR PROG1.AL) INTO A FILE
/	ALPROG.AC , ALLOWING 5 BLOCKS.
/ IF NO OUTPUT FILE GIVEN, THEN COMPILATION AS
/ USUAL, WITH ERROR MESSAGES, BUT NO ACTUAL OUTPUT.


/ OPTION	T WILL GIVE SYMBOL TABLE
/ OPTION	G WILL LOAD RALGOL FROM SYS WITH THE COMPILED PROGRAM
/ IF NO OUTPUT FILE,	AND OPTION G , IT WILL CREATE A FILE	
/	NAMED	000000.00 LOAD IT AND DELETE IT
/
/ TO CALL THE RUNTIME SYSTEM BY ANOTHER NAME, ALTER ITS FILENAME
/ WHICH WILL BE FOUND AT LOCATION 07000 BY ODT BEFORE SAVING 



/ SYMBOL DEFINITIONS & PAGE 0 VARIABLES

	IDEVH=6200	/SPACE FOR HANDLER FOR INPUT
	ODEVH=6400	/HANDLER FOR OUTPUT
SRCODE=5600
LRCODE=6000
IBUFFR=6600
OBUFFR=7200

FIELD 0
*60
OPTION,	0001	/OPTION WORD. CONTAINS 1=SYS OVERLAY
		/CONTAINS 4001 TO GIVE "T" OPTION
HSTATE,	0
IOPEN,	-1
OOPEN,	-1
ICCT,	-1
OCCT,	0
CFL,	0

/ FIXUP SWITCH FOR COMPILER
RETFLD=0
*77
FHANDL
*1203
OSIN0
*1213
OSOUT0

	WAIT=1467
*1474
	JMP I .+1
WAIT2,	GOR2	/GO CHECK KBD OR ALTERED TO CALRUN
		/IF WANT TO CHAIN
KBDCHK,	0


/ ERROR ROUTINE
 ERR0=1457


*SRCODE-11 RD40, 0 JMS 7607 200 SET 40 JMS ERR0 JMP I RD40 *SRCODE EJECT / OS/8 INPUT ROUTINE AERR0, ERR0 IL7400, 7400 IM232, -232 CMASK, 377 FOBN, 0 AIHNDL, ERR0 IBPTR, 0 W3, 0 OFNT, 0;0;0;0;0 OSIN0, 0 TAD IOPEN SZA CLA JMS I AERR0 ISZ ICCT JMP GETON JMS I AIHNDL 200 AIBUF, IBUFFR NXIB, 0 SMA CLA SKP JMS I AERR0 ISZ NXIB CLA CMA TAD AIBUF DCA IBPTR TAD MNCH DCA ICCT TAD CON10 DCA W3 GETON, TAD W3 SPA JMP C3 MNCH, CLA ISZ IBPTR TAD I IBPTR AND IL7400 CLL RAL TAD W3 FIX10, RTL RTL DCA W3 TAD I IBPTR AND CMASK TAD IM232 SZA CLA JMP NOTCZ JMS SETNXB JMP OSIN0+1 IAC DCA IOPEN NOTCZ, TAD I IBPTR AND CMASK CDF CIF RETFLD JMP I OSIN0 C3, DCA I IBPTR CLL CML JMP FIX10 CON10, 10 MOV10, 0 DCA COUNT CDF 10 TAD I PT1 ISZ PT1 CDF 0 DCA I PT2 ISZ PT2 ISZ COUNT JMP MOV10+2 JMP I MOV10 PT1, 0 PT2, 0 COUNT, 0 SETI, 0 TAD IHAND DCA AIHNDL TAD INAM+1 DCA FIBN DCA IOPEN TAD FIBN DCA NXIB CMA DCA ICCT JMP I SETI SETNXB, 0 TAD (INAM DCA PT2 CLA CMA CLL RAL /-2 JMS MOV10 TAD INAM AND (17 SNA JMP S2 TAD (7647-1 DCA PD CDF 10 TAD I PD CDF 0 SNA JMP CALLD DCA IHAND N2, JMS SETI JMP I SETNXB S2, ISZ SETNXB JMP I SETNXB CALLD, JMS RD40 JMS SETIH JMP N2 CALRUN, JMS FECH40 JMP I PGOR PGOR, GORUN PD, 0 GOR2, JMS KBDCHK JMP .-1 *LRCODE EJECT / OS/8 OUTPUT ROUTINE OSOUT0, 0 AND (377 TAD (-232 JMS OUTCH JMP OOEXIT / CALL IN CLOSE OVERLAY CLA JMS CLOSE JMP I OSOUT0 OOEXIT, CDF CIF RETFLD JMP I OSOUT0 / OUTPUT CHAR TO FILE BUFFER OUTCH, 0 TAD (232 DCA OPBLOK TAD OOPEN SZA CLA JMS ERR0 TAD OCCT SZA CLA JMPINS, JMP JMPSW TAD MNCH DCA OCCT CMA TAD AOBUF DCA OBFPTR JMP .+4 JMPSW, NOP JMP CH2 JMP CH3 TAD JMPINS DCA JMPSW CH2, TAD OBFPTR DCA TMPTR ISZ OBFPTR TAD OPBLOK P3, DCA I OBFPTR ISZ JMPSW TAD OPBLOK TAD (-232 SNA CLA JMP ATEF / NOT END OF FILE ISZ OCCT JMP I OUTCH JMS OPBLOK ISZ OFL JMP I OUTCH / RETURN 1 JMS ERR0 / END OF FILE ; PUT SHORT BLOCK ATEF, JMS OPBLOK ISZ OUTCH / BUMP RETURN ADDRESS AT END-FILE JMP I OUTCH / & RETURN 2 / OUTPUT BLOCK ROUTINE OPBLOK, 0 / ALSO USED TO HOLD CHAR JMS I AOHNDL 4200 AOBUF, OBUFFR NXOB, 0 JMS ERR0 ISZ NXOB ISZ CFL JMP I OPBLOK CH3, TAD OPBLOK RTL RTL AND O7400 TAD I TMPTR DCA I TMPTR TAD OPBLOK RTR RTR RAR AND O7400 TAD I OBFPTR JMP P3 O7607, 7607 FIBN, 0 OFL, 0 AOHNDL, ERR0 OBFPTR, 0 TMPTR, 0 / FILE HANDLING ROUTINES TO / OPEN FILES / CALLS IN OVERLAY CODE TO DO MOST OF ITS WORK FHANDL, 0 JMP SAVE GO, JMS I IBA JMP I FHANDL FECH40, JMS . JMS I O7607 400 IBA, SET 40 JMS ERR0 JMP I FECH40 CLOSE, 0 TAD CFL /ROUTINE TO CLOSE FILE CLOSUP, NOP /MAY BE CLA FOR OPT D DCA OBLOK TAD O7400 DCA CLOSUP TAD ONAM AND (17 SNA JMP I CLOSE CIF 10 JMS I PUSR 4 ONAM+1 OBLOK, 0 JMS ERR0 JMP I CLOSE O7400, 7400 /=NOP PUSR, 7700 ONAM, 0; 0; 0; 0; 0 /OUTPUT FILENAME INAM, 0; 0 /INPUT FILENAME SAVBN, 0 SAVIH, 0
*IDEVH EJECT SAVE, JMS 7607 4400 IBUFFR 40 JMS ERR0 TAD FECH40 DCA FHANDL+1 JMP GO *IBUFFR EJECT / OVERLAY FOR OPENING OS/8 INPUT AND OUTPUT FILES /FOR THE ALGOL COMPILER SET, 0 CIF 10 JMS I USR 10 /LOAD USR TO CORE TAD (200 DCA USR TAD USR DCA PUSR TAD 1210 DCA OHAND DCA I OHAND / SET DUMMY OUTPUT HANDLER ENTRY=0 CALLCD, CIF 10 JMS I USR 5 /CALL COMMAND DECODER 0114 /ASSUME .AL TLS TAD (7600 DCA PT1 TAD (ONAM DCA PT2 TAD (-5 JMS MOV10 TAD (INAM DCA PT2 TAD (7617 DCA PT1 CLA CLL CMA RAL /-2 JMS MOV10 JMS SETIH TAD (ODEVH DCA OHAND ZFILE, TAD ONAM DCA SAVIH TAD ONAM AND (17 SNA JMP NULL CIF 10 JMS I USR 1 /DEVICE HANDLER FOR OUTPUT OHAND, 0 JMS ERR1 TAD ONAM+4 SNA TAD (0103 /SETUP FILE .AC TAD (-114 SNA JMP ERINAL /TRYING FOR OUTPUT TO FILE.AL TAD (114 DCA ONAM+4 TAD (ONAM+1 DCA OP3 TAD ONAM AND (17 CIF 10 JMS I USR 2 /LOOKUP OUTPUT FILE OP3, ONAM+1 0 JMP OK DCA CFL JMS CLOSE /CLOSE THE FILE BEFORE ENTERING OK, TAD (ONAM+1 DCA NAM TAD ONAM CIF 10 JMS I USR 3 /ENTER OUTPUT FILE NAM, 0 0 JMS ERR1 TAD (OSOUT0 NULL2, DCA 1213 / SEND OUTPUT TO DUMMY ROUTINE CIF 10 JMS I USR 11 /DISMISS USR TAD (7700 DCA USR TAD USR DCA PUSR JMS SETO JMS SETI JMP I SET USR, 7700 SETIH, 0 TAD (IDEVH DCA IHAND TAD INAM AND (17 SNA JMS ERR1 CIF 10 JMS I USR 1 /DEVICE HANDLER FOR INPUT IHAND, 0 JMS ERR1 JMP I SETIH PAGE EJECT ALRNAM, 2201; 1407; 1714; 2326 /RALGOL.SV SETO, 0 CLA TAD NAM DCA FOBN TAD NAM DCA SAVBN TAD NAM DCA NXOB TAD NAM+1 DCA OFL DCA CFL DCA OCCT DCA OOPEN TAD OHAND DCA AOHNDL CDF 10 TAD I (7644 /CHECK ON /T OPTION AND (20 SZA CLA CLL CML RAR IAC DCA OPTION / SET OPTION WORD TO TYPE TABLE TAD I (7643 /CHECK ON /G OPTION AND (40 CDF 0 SNA CLA JMP .+5 TAD ONAM SNA CLA JMP ERCHN1 TAD (CALRUN-GOR2 TAD (GOR2 DCA WAIT2 CDF 10 TAD I (7643 /CHECK ON /D OPTION CDF 0 AND (400 CLL RAR /BECOMES 200 IF /D TAD (7000 /NOP OR CLA NOW DCA CLOSUP DCA ERR0 JMP I SETO ERR1, 0 CLA TAD USR DCA ER CIF 10 JMS I ER 11 /DISMISS USR AS ERROR TAD (7700 DCA USR TAD USR DCA PUSR TAD ERR1 DCA ERR0 JMP I PERR0 /GO PRINT ERROR AT LAST ER, 0 GORUN, CLA TAD (GOR2 DCA WAIT2 TAD ERR0 SZA CLA JMP GOR2 TAD 1210 DCA ER TAD I ER SZA CLA JMP ERCHN2 /JMP TO OUTPUT MESS CLA IAC /ASSUME SYS: CIF 10 JMS 7700 2 AR1, ALRNAM 0 JMP ERCHN3 TAD AR1 DCA BLOCK TAD SAVBN DCA 401 TAD SAVIH DCA 400 CIF 10 JMS 7700 6 /CHAIN BLOCK, 0 PERR0, ERR0+1 / THIS ROUTINE ONLY READS DOWN BLOCK 40
PAGE EJECT ERCHN1, JMS CHNMES JMS MESAGE;TEXT /NO OUTPUT FILE^/ CLA TAD (GOR2 DCA WAIT2 JMP WAIT ERCHN2, JMS CHNMES JMS MESAGE;TEXT /ERROR OCCURED.^/ CALOS8, JMS MESAGE;TEXT / RETURNING TO OS8^/ CIF CDF 0 TSF; JMP .-1 JMP 7600 CHNMES, 0 JMS MESAGE;TEXT /^CANNOT CHAIN AS / JMP I CHNMES MESAGE, 0 CLA CLL TAD I MESAGE RTR; RTR; RTR JMS OUT TAD I MESAGE JMS OUT ISZ MESAGE JMP MESAGE+2 OUT, 0 AND (77 SNA JMP MESEX TAD (-36 SNA JMP CRLF TAD (-2 SPA TAD (100 TAD (240 JMS TYPE JMP I OUT MESEX, ISZ MESAGE JMP I MESAGE CRLF, TAD (215 JMS TYPE TAD (212 JMS TYPE JMP MESEX-2 TYPE, 0 TSF JMP .-1 TLS JMS KBDCHK CLA JMP I TYPE PAGE EJECT ERINAL, JMS MESAGE;TEXT /^EXTENSION .AL NOT ALLOWED IN OUTPUT^/ ERIN2, TAD (WAIT DCA PERR0 JMP ERR1+1 ERNOIN, JMS MESAGE; TEXT /^ NO INPUT !^/ JMP ERIN2 ERCHN3, JMS CHNMES TAD ALRNAM DCA M1 TAD ALRNAM+1 DCA M1+1 TAD ALRNAM+2 DCA M1+2 TAD ALRNAM+3 DCA M2 JMS MESAGE M1, 0 0 0 0 JMS MESAGE;TEXT /./ JMS MESAGE M2, 0 0 JMS MESAGE TEXT / NOT FOUND^/ JMP CALOS8 NULL, TAD ONAM+1 TAD (-6060 SNA CLA JMS ERR1 CDF 10 TAD I (7643 AND (40 CDF 0 SZA CLA JMP .+3 TAD 1210 JMP NULL2 CDF 10 TAD I (7643 AND (7377 TAD (400 DCA I (7643 CDF 0 TAD F0 DCA ONAM+1 /SET UP FILENAME 000000.00 ! TAD F0 DCA ONAM+2 TAD F0 DCA ONAM+3 TAD F0 DCA ONAM+4 IAC /ASSUME SYS DCA ONAM JMP ZFILE F0, 6060 $$$$$$$$$$



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search