
FOTS TAPE 1 PART 2
/UNEXPECTED IO ERRORS COME HERE
IOERR,	0
	LAM -7
	DAC EC#O		/PREPARE TO PRINT 8 TIMES
	LAW 330		/LETTER X TYPE 33
	703301
	LAW 27		/LETTER X OR FIGURE SLASH TYPE 28
	TLS
	TSF
	JMP .-1
	ISZ ECO		/REPEAT COUNT
	JMP .-4
	LAC IOERR
	HLT		/HALT WITH ERROR ADDRESS IN AC
	JMP .-1

CHECK,	LAC I ARGIND	/END OF FORMAT TABLE ENCOUNTERED
	SAD (ENDIO
	JMP ENDIO	/ARGUMENT LIST EXHAUSTED ALSO
	LAC P#TEM
	DAC FORIND	/RETURN TO LAST LEFT PAREND
	LAC ARGIND
	ADD (-1
	DAC ARGIND	/RESET ARGUMENT LIST INDEX
	JMS ARGSLS
	JMP GEN1		/CONTINUE FORMAT PROCESSING

SLASH,	LAC IO		/END OF RECORD REQUEST
	SNA
	XCT EMP2		/SLASH RESPONSE ON READ
	SZA
	JMS DUMP
	JMS ARGSLS		/LOOK FOR EXECUTABLE ARGUMENTS
	LAC ACCTEM
	AND (377777
	SNA
	JMP GEN1		/SLASH PUNCTUATION ALONE
	JMP GEN21	/CONTINUE

LEFPAR,	LAC FORIND
	ADD (-1
	DAC PTEM		/FORMAT TABLE POINTER FOR LEFT PAREND
	LAC ACCTEM
	SAD (LAC
	JMP GEN1		/LEFT PAREND ONLY
	JMP GEN21	/CONTINUE

BUFILL,	0
	XX
	LAC FUBNI
	DAC AUTO
	JMP I BUFILL

ARGCHK,	0		/LOOK FOR EXECUTABLE ARGUMENTS
	JMS ARGSLS
	SAD (ENDIO
	JMP GEN1		/CHECK FOR ARGUMENT INDEPENDENT FORMAT
	JMP I ARGCHK

ARGSLS,	0
	LAC ARGIND
	ADD (1
	DAC TEMZER
	LAC I TEMZER	/NEXT ARGUMENT
	SAD (ENDIO
	JMP I ARGSLS	/EXIT IF EXHAUSTED
	AND (NOP
	SAD (ARF
	JMP I ARGSLS
	SAD (ARX
	JMP I ARGSLS
	JMP I TEMZER	/IF NOT ARGUMENT, SHOULD EXECUTE

DUMP,	0		/WRITE OUT THE BUFFER
	LAC AUTO
	SAD FUBNI
	JMP DUMPA
DUMPB,	CLC
	DAC I AUTO	/SET END OF RECORD
	LAC AUTO
	DAC AUTTEM	/SAVE END ENTRY POINTER
	LAC FUBNI
	DAC AUTO		/INITIALIZE BUFFER INDEX
EMP1,	XX		/SET BY I/O SUBROUTINES
EMP2,	XX
	JMS BUFSET	/CLEAR BUFFER BOTTOM
	JMP I DUMP
DUMPA,	LAC ACCTEM
	SAD (JMP
	JMP I DUMP
	JMP DUMPB

ENDIO,	ISZ ARGIND	/EXIT FROM I/O PROCESSOR
	LAC ARGIND
	AND (17777
	DAC TEMZER
	POPUP
	AND (400000
	XOR TEMZER
	PUSH		/SET NEW CAL EXIT
	LAC IO
	SZA
	JMS DUMP		/EMPTY BUFFER, IF OUTPUT
	RETWR		/EXIT TO CAL HANDLER

FECOMO,	0
	EFM
	LAC I TEMPD
	LFM
	JMS FOP
	LAC D
	DAC FR#ADIG
	JMP I FECOMO

GETSGN,	0
	SZA
	LAC (54
	JMP I GETSGN

PCKARG,	0
	LAC I ARGIND
	DAC TE#MPD
	AND (I
	SNA
	JMP PCK2
	LAC TEMPD
	AND (17777
	DAC TEMPD
	LAC I TEMPD
PCK3,	DAC TEMPD
	LAC I TEMPD
	DAC PR#NTEM
	JMP I PCKARG
PCK2,	LAC TEMPD
	AND (77777
	XOR OLDMOD
	JMP PCK3

WRSET,	0		/BREAK OUT R,W,D
	LAC ITER		/REPETITION INDICATOR
	SZA
	JMP WRS2		/RESET FIELD WIDTH COUNTER ONLY
	LAC ACCTEM
	AND (37
	DAC #W		/FIELD WIDTH
	JMS WCT
	LAC ACCTEM
	JMS R9R
	AND (17
	SNA
	LAC (1
	CMA
	ADD (1
	DAC RCNT		/REPETITION COUNT
	LAC ACCTEM
	RR6
	RAL
	AND (17
	CMA
	DAC #D		/FRACTIONAL FIELD, COMPLEMENTED

WRS3,	LAC ACCTEM
	AND (DZM I	/RESTORE FORMAT TYPE TO AC
	JMP I WRSET
WRS2,	JMS WCT
	JMP WRS3
WCT,	0
	LAC W
	CMA
	ADD (1
	DAC W#CNT		/SET FIELD WIDTH COUNTER
	DAC FLDLNG
	JMP I WCT

HOI,	LAC IO		/HOLLERITH PROCESSOR I/O SWITCH
	SZA
	JMP OUTPTH	/IO NON-ZERO INPLIES WRITE
	LAC RCNT
	DAC FLDLNG
	JMS BUFILL	/NEXT ITEM TO BUFFER
	DZM FIOCAS	/INITIAL LOWER CASE
	LAC AUTO		/TRANSLATE ANELEX TO FIODEC
	DAC AUTOI2	/AUTO POINTS OT BUFFER BEGINNING
BUFFIO,	LAC I AUTO
	SAD (13
	JMP FDTAB	/FOUND TAB
	SPA
	JMP FDCR		/FOUND END OF RECORD
	ANAFIO		/ANELEX TO FIODEC
FIO2,	DAC I AUTOI2
	JMP BUFFIO
FDTAB,	LAC (36
	JMP FIO2	/FIODEC TAB CODE, CONTINUE
FDCR,	LAC FUBNI
	DAC AUTO		/RESTORE BUFFER INDEX
	DZM I AUTOI2		/ZERO FOR RECORD END
INPUTH,HOL1,	DZM H#OLER	/'H' INPUT
	LAM -2
	DAC C#NT
	LAC HOLER
HOL2,	RL6		/PREPARE TO PACK NEXT CHARACTER
	DAC HOLER
	LAC I AUTO
	SPA!CLL
	CML		/UPPER CASE (SET BY ANAFIO)
	AND (77
	DAC TEMZER
	CLA!RAL
	XOR FIOCAS
	SZA
	JMP CASET	/FIODEC CASE CHANGE
	LAC TEMZER
	ADD HOLER
	ISZ RCNT		/CHARACTER COUNT
	SKP

	JMP HOLFIN	/FINISHED
HOL3,	ISZ CNT		/CHARACTER PER WORD COUNT
	JMP HOL2		/CONTINUE PACKING
	DAC I FORIND	/WORD TO FORMAT LIST
	JMP HOL1
HOLFIN,	ISZ CNT
	SKP
	JMP FIN
	RL6
	ADD (13		/HOLLERITH FILLER CODE (FIODEC)
	JMP HOLFIN
FIN,	DAC I FORIND
	AND (77
	SAD (13
	SKP
	ISZ FORIND
	JMP GEN4

CASET,	LAC AUTO
	ADD (-1
	DAC AUTO		/RESTORE PICK-UP ADDRESS
	LAC FIOCAS	/SET NEW FIODEC CASE
	RAR
	DZM FIOCAS
	SNL
	ISZ FIOCAS
	LAC (72
	SNL
	LAC (74		/LINK SENSE OPPOSITE OF NEW CASE
	ADD HOLER
	JMP HOL3

OUTPTH,	LAC (NOP
	DAC TOCX
	LAC FORIND
	ADD (1
	TOC		/OUTPUT TEXT ROUTINE
	LAC TO#CTEM
	DAC FORIND
	JMP GEN1

XOI,	LAC IO		/'X' FORMAT PROCESSOR
	SZA
	JMP OUTPTX	/NON-ZERO IMPLIES WRITE
XI2,	XX		/'X' INPUT PRESET
	ISZ RCNT		/TWO#S COMPLEMENT COLUMN COUNT
	JMP XI2
	JMP GEN4

OUTPTX,	CLA
	STASH		/BLANK TO OUTPUT BUFFER
	ISZ RCNT
	JMP OUTPTX
	JMP GEN1

/RESET ROUTINE WHEN FINISHED WITH CURRENT ARRAY
DONE,	0
	DZM ARGUE	/ARRAY VARIABLE INDICATOR CLEAR
	LAC DONE
	ADD (-1
	DAC ARGIND	/RESET I/O LIST INDEX
	LAC ITER		/REPETITION COUNT
	SZA
	JMP GEN3-1	/DO NOT PICK UP NEW FORMAT WORD
	LAC I DONE
	AND (17777
	SAD (ENDIO
	JMP XDON
	LAC IO
	RAR
	LAC ACCTEM
	SAD (JMP
	SKP
	AND (377777
	SNA
	JMP YDON
	SZL
	JMP GEN1+3
	JMS BUFSET
	LAC ACCTEM
	AND (377777
	JMP GEN1+3


/INTERMEDIATE PROCESSOR FOR ARRAY VARIABLE I/O
XARAD,	0
	LAC (ARX I TEMAD	/ELEMENT ACCESS ADDRESS
	JMP XARFAR
FARAD,	0
	LAC TEMAD	/CONTAINS ELEMENT ACCESS ADDRESS
	AND (77777
	XOR FARMOD	/INCLUDE DATA MODE
	DAC TEMAD
	LAC (ARF I TEMAD
XARFAR,	DAC XELF
	LAC (XELF-1
	DAC ARGIND	/SET PSEUDO IN I/O LIST INDEX
	ISZ ARGUE
	LAC ACCTEM
	AND (177777
	SNA
	JMP GEN1
	LAC ITER
	SZA
	JMP GEN2		/ALREADY IN PROCESS
	JMP GEN21	/SET UP FOR POSSIBLE H,X
XELF,	0

XDON,	ISZ ARGIND
	JMP ENDIO

YDON,	SNL
	JMP GEN4
	JMP GEN1
START
