File CCL.MA (MACREL macro assembler source file)

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

GO TO 2ND OUTPUT FILE & COPIES NAME
	/11	WANT DEFAULT ALTMODE (COMPL IF AMFLAG=1)

/1	PTR TO DEFAULT EXTENSION LIST FOR INPUT FILES.
/	IF PTS TO 0, NONE.   IF PTS TO 5200, USE SPECIAL MODE.

/2-4	DEFAULT SWITCHES TO BE OR'ED INTO THOSE
/	EXPLICITLY GIVEN.

/5	ADDRESS OF SUBROUTINE TO BE CALLED
/	AFTER C.D. HAS BEEN DONE.  0 IF NONE.

/6	PTR TO FILENAME OF PROGRAM
/	TO BE CHAINED TO.  0 IF NONE.

/	FIELD 0

/1000-1777	LINE BUFFER
/2000-2777	LINE BUFFER EXTENSION
/4000-4377	REM-LINES
/4400-4777	HANDLER
/5000-5577	BUFFER
/6000-7577	MORE CCL (7 PAGES)

	REST=5000

.ASECT CCL *2000 .JSW 2103 .VERSION CCLNUM&77^100+<CCLVER&77> FIELD 1 FAKBM=404 /PLACE TO FAKE OUT KBM START, JMP .+3 /START FROM MONITOR JMP MONF /START FROM .RUN COMMAND JMP MONCHN /START WHEN CHAINED TO CLA CDF 0 /READ IN REST OF CCL TAD I (CCLBLC /GET BLOCK OF START DCA I (SOFSET /ALLOW LINKER OVERLAY DRIVER TO WORK TAD (7607 DCA I (7756 TAD I (SOFSET CDF 10 TAD CCLREM DCA CCLREM /GET BLOCK OF REST CIF 0 JMS I (7607 1300 /READ 11 MORE PAGES REST WFL, CCLREM, 1+5+1 /SKIP CCB AND *400 STUFF JMP I (ERR2 JMS FIXX JMS TWAIT CDF 0 TAD I LVNO CDF 10 TAD (-CCLTAB /DO VERSION #'S AGREE? SZA CLA JMP I (BADVNO JMS I (AT TAD (BEGLN-1 DCA XR L$: CDF 0 TAD I XR CDF 10 SNA JMP 2$ TAD (-"; SZA CLA JMP L$ / JMS I (SEMI NOP 2$: STA DCA I (REMD /ALLOW RECURSIVE U'S CDF 0 TAD I KENTRY /GET ENTRY # CIF CDF 10 TAD (PTBL /GET ADDRESS OF PTR TO START OF ENTRY DCA PTR CDF TABLES TAD I PTR /GET PTR TO START OF ENTRY CDF 10 DCA PTR TAD PTR BASPTR, DCA BASPTR JMP I (GO FIXX, 0 DCA I (XFERV /SET UP STUFF FOR OVERLAY DRIVER TAD (SWAPER DCA I (XFERV+1 JMP I FIXX MONF, JMS FIXX JMP I (MONFIX
MONCHN, CIF 0 JMS I (7607 /READ IN KBM 1000 /4 BLOCKS 0 /0-1777 7 /BLOCK 7 ON SYS: HLT /NO WAY TO RECOVER (EVEN 7605 DOES THIS) TAD (-44 JMS I (MOVE /ASSUME COMMAND LINE IS IN CDF 10 /17600-17643 7600 CDF 0 1000 /MOVE TO OS/8 LINE BUFFER CIF CDF 0 YAT, JMP I KFAKBM /@ DESTROYS THIS CODE (MUST BE ONE BEFORE 'REGO') TAD I (SAVL /'YAT' IS JMS'ED TO SNA CLA /BY INITIAL @ COMMAND JMP I (LEAVE /DO NOTHING IF NO @ GOT EXPANDED (NULL LINE) REGO, CIF 0 JMS I (7607 200 /READ ONE BLOCK 400 /400-777 10 /RESTORE PART OF KBM WHICH WAS DESTROYED BY OVERLAY HLT JMP I (FAKE /REGO, TAD KCIDF / CDF 0 / DCA I (RETCIF /ALLOW 'FINDIT' TO RETURN TO FIELD 1 / CIF CDF 0 / STA / DCA I (HALF / DCA I (ENTRY / TAD (KEYWRD / DCA I (KPTR / JMS I (FINDIT /LOOK UP KEYWORD / SMA CLA / JMP PREGO /FOUND IT /CMDERR, JMS I (PRMESG /NOT A LEGAL KEYWORD / ERRCMD .START START+1,1
TWAIT, 0 DCA WFL JMS I (BATCH JMP TW /BATCH NOT RUNNING CLA /WE'RE RUNNING UNDER BATCH JMP I TWAIT TW, TSF SKP /WAIT FOR THINGS TO QUIET DOWN JMP I TWAIT LVNO, AND I 0 /WASTE SOME TIME KFAKBM, AND I 4 KENTRY, 600 ISZ WFL JMP TW JMP I TWAIT /CAN'T WAIT TOO LONG FILDMY, FILENAME DUMMY.SV 0 /EXTRA EXTENSION WORD PAGE
BADVNO, JMS I (PRINT BADVMS JMS I (VERTN JMP I (LEAVE /GO AWAY
/THIS ROUTINE DETERMINES IF THE CHARACTER IN THE AC IS A LETTER OR DIGIT /IF LETTER, RETURNS TO RET+1 WITH LETTER-"A IN AC AND LINK=0 /IF DIGIT, RETURNS TO RET+1 WITH DIGIT-"0 IN AC AND LINK=1 /IF NEITHER, RETURNS TO RET WITH CHAR-"A IN AC. DECODE, 0 TAD (-"9-1 /MIGHT BE CALLED WITH ANY DF CLL TAD ("9+1-"0 SZL JMP YES$ TAD ("0-"Z-1 CLL CML TAD ("Z-"A+1 SNL YES$: ISZ DECODE JMP I DECODE
LBEGIN, 0 /PTS TO 1 CHAR BEFORE COMMAND KEYWORD ARGUMENT SCAN, 0 TAD (BEGLN DCA T CDF 0 JMS BLSCAN /IGNORE INITIAL SPACES JMP 2$ 1$: CLA ISZ T TAD I T 2$: SNA JMP 3$ JMS I (DECODE SKP CLA JMP 1$ JMS BLSCAN 3$: DCA DELIM STA TAD T CDF 10 DCA I (LBEGIN JMP I SCAN BLSCAN, 0 TAD I T TAD (-240 SZA JMP 1$ ISZ T JMP BLSCAN+1 1$: TAD (240 JMP I BLSCAN /LEAVE CHAR IN AC
SETLPT, 0 /COULD BE ONCE ONLY TAD (LPTDEV JMS I (SETDEV JMP I SETLPT SETTTY, 0 TAD (TTYDEV JMS I (SETDEV JMP I SETTTY SETPTP, 0 TAD (PTPDEV JMS I (SETDEV JMP I SETPTP FAKE, CIF CDF 0 TAD (MSOVL2 DCA I (OV /RESTORE LOC SO DATE CMD W ARGS WILL WORK JMP I (FAKBM
SYSER, TEXT \#I/O ERROR ON SYS:\
GO, JMS I (SCAN /ADVANCE SCAN UNTIL AFTER SPACES GO2, CDF TABLES TAD I PTR /GET FLAG CDF 10 DCA FLAG /SAVE IT TAD DELIM SNA CLA /IS TYPED LINE EMPTY AFTER KEYWORD? TAD FLAG /AND IS SPECIAL REMEMBERING BITS ON? CLL RTR RAR /AND HAS GOD WILLED US TO REMEMBER? AND (7 /AND ARE THE ZODIAK SIGNS FAVORABLE? SNA JMP I (NORM /NO TAD REMD /YES, GET REM-LINE (SUBTRACT 1) DCA REMD CDF 0 TAD I (BEGLN CDF 10 DCA I (NMPTR JMS I (RECALL /RECALL LINE REMD, -1 /-1 MEANS DIDN'T RETRIEVE A REMEMBER LINE DCA DEPN /SAVE DEPENDENT INFO TAD I (NMPTR SZA CLA /EG COMMAND? JMP I (NORM /NO ISZ DELIM /YES TAD DEPN DCA PTR /RESET PTR FROM CMD DEPENDENT WORD JMP GO2 DEPN, 0 /REM LINE DEPENDENT INFORMATION PAGE
COLWRD /NEEDED FOR SET TTY COL NORM, TAD FLAG L7700, SMA CLA JMP CHAINN /SKIP ENTRIES IF NO CD ISZ PTR /POINT TO DEFAULT INPUT EXTENSION CDF TABLES TAD I PTR /GET DEFAULT INPUT EXTENSION PTR CDF 10 DCA DEFALT /SAVE IT TAD (7641 DCA XR TAD FLAG CDF 0 TAD I PAMFLAG /COMBINE ALTMODE BITS CDF 10 RAR /IN POSITION 11 CLA RAR /PUT NEW ALTMODE BIT ALONE IN BIT 0 DCA I XR /STORE AWAY IN C.D. OPTION TABLE DCA I XR /V3D ZERO OPTION WORDS DCA I XR DCA I XR DCA I XR /ZERO L.O. = L$: ISZ PTR CDF TABLES TAD I PTR SNA JMP 2$ DCA NTEMP ISZ PTR TAD I PTR /GET VALUE CDF 10 TAD I NTEMP DCA I NTEMP /STORE IN SPECIFIED LOCATION JMP L$ 2$: CDF 10 TAD FLAG AND (400 SZA CLA JMS I (INSARR /INSERT BACK ARROW IF FLAG BIT SET JMS I (CD /PERFORM COMMAND DECODE IF FLAG BIT /0 SET TAD FLAG RAL SMA CLA /IS SPOOLING PROHIBITED? JMS I (SPOOLIT /NO CHAINN, ISZ PTR /POINT TO AFTER CD SUBR CDF TABLES TAD I PTR /GET SUBR ADDRESS CDF 10 JMS I (JMSUB TAD I (DEFILE SZA /IS THERE A FILENAME SET TO CHAIN TO? JMP ZOW /YES ISZ PTR /NO, POINT TO FILENAME CDF TABLES TAD I PTR CDF 10 SNA JMP I (LEAVE /NO FILE TO CHAIN TO ZOW, DCA NMPTR JMS LOOK /LOOKUP FILE NMPTR, 0 JMP I (CCER1 /NOT FOUND CHAIN, JMS I (200 /CHAIN TO IT 6 /CHAIN BLK, 0 / ----- PAMFLAG,AMFLAG
/LOOK, LOOKS UP FILE ON DEVICE . POINTER IS IN ARG1 / ARG2 IS ERROR RETURN IF NOT FOUND /DEVICE NUMBER IS IN AC. IF 0, USE SYS: LOOK, 0 SNA IAC DCA DEV TAD I LOOK /GET PTR TO FILE NAME IN FIELD 0 DCA HISFIL TAD HISFIL AND L7700 SNA CLA JMP FLD1 /PTR LT 100 MEANS IN FIELD 1 TAD (-3 JMS I (MOVE /MOVE IT UP CDF 0 BWORD, HISFIL, 0 CDF 10 PFILDMY,FILDMY TAD PFILDMY SETN, DCA NAMPTR /STORE AWAY PTR TO FILENAME ISZ LOOK /POINT TO ERROR RETURN TAD DEV /GET DEVICE NUMBER JMS I (200 2 /LOOKUP NTEMP, NAMPTR, 0 0 JMP I LOOK /TAKE ERROR RETURN IF NOT FOUND TAD NAMPTR /STORE STARTING BLOCK # IN 'BLK' DCA BLK ISZ LOOK /POINT TO NORMAL RETURN JMP I LOOK /RETURN
FLAG, 0 DEV, 0 FLD1, TAD HISFIL JMP SETN /SKIP IF BATCH IS RUNNING AND PUT CIF BATCH FIELD IN AC BATCH, 0 CDF 0 TAD I (7777 CDF 10 DCA BWORD TAD BWORD RTL SNL CLA /IS BATCH RUNNING? JMP I BATCH /NO TAD BWORD /YES AND (70 /ISOLATE FIELD OF BATCH TAD (CIF /FORM CIF TO THE HIGHEST FIELD ISZ BATCH /AND TAKE SKIP RETURN WITH IT IN AC JMP I BATCH PAGE
DEFILE, 0 /PTR TO FILENAME TO CHAIN TO TEMP, RDMON, 0 CDF 10 CIF 0 CLA JMS I (7607 0400 /READ 2 RECORD 2000 /LOCATION 2000 FIELD 0 7 /BLOCK 7,10 JMP IOERR JMP I RDMON ERR2, CIF CDF 0 JMP I (NOCCL
EXSUB, 0 TAD BASPTR /PUSH PTR BACK TO BEGIN OF ENTRIES JMS I (REMEM /REMEMBER THIS IN DEPENDENT WORD 2 JMP I EXSUB JMSUB, 0 SNA JMP I JMSUB DCA TEMP JMS I (CCSUB /LOAD OVERLAY JMS I TEMP JMP I JMSUB SPOOLIT,0 JMS I (BATCH /IS BATCH RUNNING? JMP I SPOOLIT /NO DCA CB /YES CDF 0 TAD I DEFALT TAD (-5200 SNA CLA TAD I DEFALT /LEAVE 5200 IN AC IF SPECIAL MODE CDF 10 CB, HLT /CIF TO FIELD OF BATCH JMS I (BATSPL /ALLOW BATCH TO SPOOL STUFF JMP I SPOOLIT
INSARR, 0 TAD (BEGLN DCA XR CDF 0 TAD I XR SZA CLA JMP .-2 STA TAD XR DCA XR TAD ("< DCA I XR DCA I XR CDF 10 STA TAD XR DCA I (ARLOC /REMEMBER WHERE WE INSERTED A "_" JMP I INSARR
/ TAD (-# OF LOCS TO MOVE / JMS MOVE / FROM CDF / FROM LOC / TO CDF / TO LOC MOVE, 0 DCA T TAD I MOVE /GET FROM CDF DCA FRCDF ISZ MOVE STA TAD I MOVE /GET FROM LOC-1 DCA XR ISZ MOVE TAD I MOVE /GET TO CDF DCA TOCDF ISZ MOVE STA TAD I MOVE /GET TO LOC-1 DCA XR2 ISZ MOVE /POINT TO RETURN TAD T SNA CLA JMP I MOVE /V1A IGNORE 0 MOVE FRCDF, HLT TAD I XR TOCDF, HLT DCA I XR2 ISZ T JMP FRCDF CDF 10 JMP I MOVE
OUTSW, -1 /-1 MEANS ON OUTPUT SIDE, 0 ON INPUT SIDE OUTLIM, 1-MIFILE
IOERR, JMS I (PRMESG SYSER BADVMS, TEXT /#CCL 3X OVERLAY AND CCL INCOMPATIBLE/ AAAA=. *BADVMS+3 CCLTAB&77^100+40 *AAAA COLWRD, 1 COLSET, 0 / JMS I (CCSUB JMS I (SETTTY TAD I (7646 SNA TAD COLWRD DCA I (7646 JMP I COLSET PAGE
.ASECT CCLMOR FIELD 0 *6740 YCCL, FILENAME CCL.SV *.-1 YFORT, FILENAME FORT.SV *.-1 YF4, FILENAME F4.SV *.-1 YLOADER,FILENAME LOADER.SV *.-1 YLOAD, FILENAME LOAD.SV *.-1 LPTDEV, DEVICE LPT TVDEV, DEVICE TV TTYDEV, DEVICE TTY PTPDEV, DEVICE PTP DMPDEV, DEVICE DUMP NULDEV, DEVICE NULL FNAME1, ZBLOCK 5



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