File HEXA8.AL

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


	STA
	TAD I	X0
	DCA	X1
	TAD I	X0
	DCA	TOFLD
	STA
	TAD I	X0
	DCA	X2
	TAD I	X0
	DCA	MVC		/NUMBER OF WORDS
FRMFLD,	HLT
	TAD I	X1
TOFLD,	HLT
	DCA I	X2
	ISZ	MVC
	JMP	FRMFLD
MOVER,	HLT
	JMP I	X0		/RETURN
MVC,	0
/
/
/
/
/
/
/
/
READL,	0
	JMS	MOVE
	ETHA
	ETBFIA
	ETHB
	ETBFIB
	ETHLE
	JMS	CLBFIA
	JMS	CLBFIB
	ISZ	FREAD		/FIRST READ ?
	JMP	.+6
	CDF	10
	TAD I	(ETBFIB+1
	CDF	0
	AND	(7
	DCA	EXPNO
	DCA	FREAD
	JMS	REBLO		/SAVE HEADER
	JMP I	READL
FREAD,	-1
IDCN0,	0
VIERZG,	0
	TAD	[40
	DCA I	X3
	JMP I	VIERZG

QSLNEC,	0			/ROUTINE TO TEST IF QSL IS NECESSARY
	TAD	SEQSL
	TAD	[-20
	SMA	CLA
	JMP	QSLN1		/NEC, IT IS NEG QSL
	TAD	RECNO
	CIA
	TAD	SEQSL
	SNA	CLA
	JMP I	QSLNEC		/NEED NO QSL
QSLN1,	ISZ	QSLNEC
	JMP I	QSLNEC
	PAGE

/ / / / ROUTINE TO GET INFO FROM LO BUFFERS AND FILL IN BFOB / INFOGE, 0 JMS SENALL /IS SEND ALLOWED JMP I INFOGE /NO TAD WFLG /DO WE HAVE TO WAIT FOR EXPECTED BLOCK SZA CLA JMP I INFOGE /YES TAD WCLO0 /TEST LO0 BUF FOR INFO SPA CLA JMP LAB8 /LO0 INFO LAB10A, JMS QSLNEC JMP I INFOGE TAD WCLO1 SPA CLA JMP LAB9 /LO1 INFO JMS STOPST /NO LO1 INFO, CLEAR LO1 STATUS DLO1 LAB10, CLA CLL JMS VORSP /FILL IN QSL 0 /STREAM NUMBER 0 CDF 10 TAD [40 /FILL IN NOP DCA I X3 /FILL REST WITH 0 ISZ WCBFOB JMP .-2 CDF 0 JMP I INFOGE /RETURN LAB8, JMS VORSP /FILL IN ETBFOB STREAM 0 INFO 0 JMS FILOET /STREAM IN SSTRM=0 JMP I INFOGE IFNDEF SIMOUT < LAB9, TAD RSTAT /TEST IF LO1 IS DEFINED AND (DLO1 SNA CLA JMP LAB10 > /QSL NECESSARY IFDEF SIMOUT < LAB9, > JMS VORSP 1 JMS FILOET /STREAM IN SSTRM JMP I INFOGE / / END OF INFOGE / / / / VORSP, 0 TAD (ETBFOB-1 DCA X3 /SET UP POINTER, USES AUTOINDEX X3 TAD I VORSP /FETCH ARGUMENTS STREAMBUFFERPOINTERS DCA SSTRM TAD I VORSP CDF 10 JMS VIERZG ISZ VORSP TAD SENDNO /NUMBER OF BLOCK FOR SEND JMS VIERZG TAD SENDNO /INCREMENT NO IN MODULO 17B IAC AND [17 DCA SENDNO TAD SEQSL /TEST FOR NEGATIVE QSL TAD (-20 SPA CLA JMP VORS1 /NOT NEGATIVE TAD SEQSL JMS VIERZG TAD SEQSL DCA OLDQSL TAD RECNO DCA SEQSL P1 DCA WFLG /SET WAIT ON EXPECTED BLOCK FLAG JMP VORS2 /SEND ONLY ONE NEG QSL VORS1, TAD SEQSL CIA TAD RECNO SZA CLA P1 TAD SEQSL AND [17 DCA SEQSL TAD SEQSL DCA OLDQSL TAD SEQSL JMS VIERZG VORS2, TAD SSTAT CLL RAL BSW AND (3 JMS VIERZG TAD SSTAT AND (37 JMS VIERZG CDF 0 TAD WCBFOB TAD (4 /SET PROPERWC, POINTER IS AUTOINDEX DCA WCBFOB JMP I VORSP / / END OF VORSP / WFLG, 0 REPOFI, 0 P4 CIA TAD X3 SNA CLA JMP I REPOFI /NEVER OVERWRITE VORSPAN JMS MINUS X3 JMS MINUS WCBFOB JMS MINUS WC2 JMP I REPOFI PAGE
/ / / / FILOET ROUTINE TO FILL ETHB OUT BUFFER / FILOET, 0 JMS FILOE1 TAD (-730 DCA WC2 TAD SSTRM SNA CLA JMP FILO0 FILO4, TAD LO1 DCA GETP TAD WCLO1 DCA WC1 JMP FILO3 FILO0, TAD LO0 DCA GETP TAD WCLO0 DCA WC1 FILO3, JMS NEWF /NEW FILE? JMS FETCHC /FETCH CHAR, RETURN+1 IF WITH CHAR JMP LAB12 /NO MOORE CHARS DCA SCHAR JMS CHATE CR /TEST FOR CR JMP LAB12A JMS CHATE LF JMP FILO3 JMS CHATE FFEED JMP FILO3 JMS CHATE 0 JMP FILO3 JMS CHATE CTRLTA JMP LAB15 TAD I LASTSX DCA .+2 JMS CHATE /TEST FOR SAME CHAR AS LAST HLT JMP LAB16 JMS REPO TAD SCHAR DCA I LASTSX FILO5, JMS CHATE CTRLZ JMP LAB14 JMS PUTCA LAB13, TAD WC2 /MOORE ROOM? SPA CLA JMP FILO3 /YES JMS SETLOX JMP I FILOET WC2, 0 LAB12A, JMS REPO TAD SCHAR DCA I LASTSX JMS PUTCA /CR PRCESSING TAD [LF JMS PUTCA TAD (-7 DCA I TABSX JMP LAB13 LAB12, JMS REPO LAB12B, JMS FILOE2 /COMES TO HERE IF NO MORE CHARS FILOER, JMP I FILOET LAB14, TAD SSTRM SNA CLA JMP LAB12 /ALWAYS EOI ON LO0 JMS REPO TAD EOIFLG /EOI? SZA CLA JMP ISEOI1 TAD [EOR JMS PUTCA P1 DCA WC1 /SET WC1 TO 1 JMP LAB12B LAB15, JMS TAB JMP FILO3 / / LAB16, TAD SSTRM SNA CLA JMP FILO5 /NO REP ON LO0 ISZ I REPSX /REPCN INCREMENT TAD (-100 TAD I REPSX /REPCOUNTER SHOULD NOT BE GREATER THEN 100 SPA CLA JMP FILO3 /IT IS LESS THEN 100 M1 TAD I REPSX DCA I REPSX /THIS CHAR IS TREATED NEXT TIME JMS REPO /GT THEN 100, CLEAR IST JMP FILO5 /PUT THIS CHAR IN BUFFER / / / SETLOX, 0 JMS OBF0 TAD SSTRM SZA CLA JMP .+6 TAD GETP DCA LO0 TAD WC1 DCA WCLO0 JMP I SETLOX TAD GETP DCA LO1 TAD WC1 DCA WCLO1 JMP I SETLOX / / PAGE
/ / / FILOE1, 0 TAD SSTRM TAD (LASTCS DCA LASTSX TAD SSTRM TAD (REPCNS DCA REPSX TAD SSTRM TAD (SWISE DCA SWISX TAD SSTRM TAD (NEWFS DCA NEWFSX TAD SSTRM TAD (BITO3 DCA BITO3X TAD SSTRM TAD (TABSCN DCA TABSX JMP I FILOE1 / / / END OF FILOE1 / / FILOE2, 0 TAD SSTRM SZA CLA JMP FILOE3 /STREAM LO1 DCA WCLO0 JMS OBF0 /FILL REST WITH 0 JMP I FILOE2 FILOE3, TAD GETP DCA LO1 TAD WC1 DCA WCLO1 JMS GETLO1 TAD WCLO1 SPA CLA JMP FILO4 /RETURN FOR UNPACK JMS OBF0 JMP I FILOE2 / / END OF FILOE2 / / / / / FETCHC ROUTINE TO FETCH CHARS FROM LOX BUFF / INFO MAY BE PACKED OR NOT FETCHC, 0 TAD WC1 /DO WE HAVE INFO? SMA CLA JMP I FETCHC /NO P1 TAD I SWISX /GET CHAR SWITCH TAD INJMP0 DCA INJMP2 INJMP2, HLT /CONTAINS JMP TO CHAR JMP CHAR1 JMP CHAR2 DCA I SWISX /CLEAR UNPACK SWITCH JMS GETPO BSW; CLL RTR AND [17 TAD I BITO3X /REST OF 3RD CHAR JMP FETCHR /RETURN WITH CHAR IN AC CHAR1, ISZ I SWISX JMS GETPO RTR; RTR AND (360 DCA I BITO3X JMS GETPO JMP FETCHR CHAR2, ISZ I SWISX JMS GETPO AND [RUBOUT ISZ FETCHC JMP I FETCHC FETCHR, AND [RUBOUT ISZ GETP ISZ WC1 NOP ISZ FETCHC /WE HAVE A CHAR JMP I FETCHC INJMP0, JMP INJMP2 BITO3X, 0 / / / / / / REPO, 0 TAD I REPSX SNA CLA JMP I REPO /NOTHING TO DO JMS REPOFI TAD I REPSX TAD (-3 SPA CLA /IS REPSEQUENCE BIG ENOUGH JMP NOREP TAD (SOH JMS PUTCA /PUT SOH IN BUF TAD (35 TAD I REPSX JMS PUTCA TAD I LASTSX JMS PUTCA DCA I REPSX JMP I REPO NOREP, P1 /X3 WAS SET ONE BACK!! TAD I REPSX CIA DCA I REPSX NOREP1, TAD I LASTSX JMS PUTCA ISZ I REPSX JMP NOREP1 JMP I REPO GETPO, 0 CDF 10 TAD I GETP CDF 0 JMP I GETPO PAGE
PUTCA, 0 SNA /ENTER WITH OR WITHOUT CHAR TAD SCHAR CDF 10 DCA I X3 CDF 0 ISZ WCBFOB ISZ WC2 NOP ISZ I TABSX JMP I PUTCA TAD (-7 DCA I TABSX JMP I PUTCA / / / / / / / / NEWF, 0 TAD I NEWFSX /NEW FILE? SNA CLA JMP I NEWF /NO DCA I NEWFSX /YES DCA I REPSX TAD (-7 DCA I TABSX TAD (AD JMS PUTCA /PUT AD IN BUF NEWF1, DCA I SWISX JMP I NEWF / / / TAB, 0 JMS REPO /CLEAR REPO FIRST JMS PUTCA /REPO SETS C(X3)=X(X3)-1 TAD [40 DCA I LASTSX TAD I TABSX CIA DCA I REPSX TAD (-7 DCA I TABSX JMS REPO JMP I TAB CHATE, 0 TAD I CHATE /CHARACTER TEST ROUTINE AND [RUBOUT CIA TAD SCHAR AND [RUBOUT ISZ CHATE SZA CLA ISZ CHATE JMP I CHATE / / / SENALL, 0 TAD SENDNO CIA TAD REQSL SMA CLA TAD [20 TAD SENDNO CIA TAD (DIFF TAD REQSL SMA CLA ISZ SENALL JMP I SENALL / / / / / INFG, 0 /FILEPOINTER LO1 INCREMENT ROUTNE TAD LO1FG IAC DCA LO1FG TAD LO1FG CIA TAD (LO1FMA /IT IS A RING BUFFER MAX EXEEDED? SMA CLA JMP I INFG TAD (LO1FMI DCA LO1FG JMP I INFG / / / / / M2FG, 0 /SETS FILEPOINTER 2 BACK M2 /-3 IN AC TAD LO1FG DCA LO1FG TAD (LO1FMI CIA TAD LO1FG /AC MUST BE .GE. 0 SMA JMP .+3 TAD (LO1FMA+1 DCA LO1FG CLA CLL JMP I M2FG / / / / / / / USRIN, 0 JMS FLD0 DCA USRINR TAD USRINS /TEST IF USR ALREADY IN CORE SZA CLA /SKIP IF NOT JMP USRINR / ALREADY IN CORE P1 DCA USRINS CIF 10 JMS I (7700 10 USRINR, HLT JMP I USRIN USRINS, 0 /IF INIT, USR IS NOT IN CORE / / / / / USROUT, HLT /MAY NOT BE 0 FOR INTIT JMS FLD0 DCA USROUR TAD USRINS SNA CLA JMP USROUR DCA USRINS CIF 10 JMS I (200 11 USROUR, HLT JMP I USROUT PAGE
/ / / GETLO1, 0 /ROUTINE TO FETCH LO1 INFO FROM OS8 DEV JMP I .+1 /THIS IS FOR REENTRY OF ROUTINE LO1NEX, STARGE JMP I GETLO1 STARGE, TAD WCLO1 SPA CLA JMP I GETLO1 /NOTHING TO DO TAD I LO1FG /IS THERE INFO IN FILETABLE AND (4000 SNA CLA JMP I GETLO1 /NO TAD I LO1FG AND (77 /TEST FOR TTY SNA CLA P1 DCA CALAC /THIS IS AC FOR HANLDER CALL JMS INFG /INCR POINTER TAD I LO1FG /FETCH BLOCKNUMBER DCA GETBLO TAD CALAC JMS I LO1HA -LO1BUL%2+10 LO1BU GETBLO, 0 JMP LO1ERR TAD CALAC /WAIT FOR TTY SNA CLA JMP NOTTTY SKP JMS LO1NEX CDF 20 /NEXT ENTRY IS HERE M2 TAD I (RF /TEST IF READFLAG IS 2 CDF 0 SNA CLA JMP .-6 /WAIT RF=2 JMS LO1SUB /SET POINTERS AND WC JMS LO1STA /RESTORE ENTRY JMS INFG TAD TTYZF SZA CLA JMP LO1EOF JMP OSRET NOTTTY, JMS LO1SUB TAD (-LO1BUL%400 /UPDATE WC AND CA TAD I LO1FG DCA I LO1FG JMS INFG TAD (-LO1BUL%400 TAD I LO1FG SMA JMP LO1EOF DCA I LO1FG OSRET, JMS M2FG /RESET POINTER DCA I (SWISE+1 JMP I GETLO1 / / MORLO1, JMS USRIN TAD I LO1FG JMS FETCHH 7400 /HANDLER FOR LO1 IF NOT SYS OR DSK LO1HA, 0 /ENTRY FOR LO1HANDLER JMS USROUT JMS LO1NEX TAD WCLO1 SPA CLA JMP .-3 /WAIT FOR LO1 EMPTY P1 DCA I (NEWFS+1 /SET NEW FILE JMS LO1STA /RESTORE ENTRY JMP STARGE CALAC, 0 / / / / LO1EOF, JMS M2FG /RESET POINTER JMS FINTAC /CLEAR OLD FILE ENTRIES JMP MORLO1 JMS LOTACL P1 DCA EOIFLG /SET EOI FLAG DCA I (SWISE+1 SKP JMS LO1NEX TAD EOIFLG SZA CLA JMP .-3 P1 DCA I (NEWFS+1 SKP JMS LO1NEX /NEXT ENTRY TO GETLO1 WILL GO HERE TAD WCLI0 SMA CLA JMP .-3 JMS TELE LO1MSG JMS SEND0 JMS TTYOUT JMS LO1STA JMP I GETLO1 / / / ISEOI1, DCA EOIFLG TAD [EOI JMS PUTCA JMS OBF0 P1 DCA WCLO1 JMS LOTACL /CLEAR FILETABEL EOI, MAY BE FORCED JMP FILOER /RETURN FROM FILOET PAGE
/ FINTAC, 0 /CLEAR FILENAMETABLE ENTRY TAD (-3 DCA GETCN DCA I LO1FG JMS INFG ISZ GETCN JMP .-3 TAD I LO1FG /MORE ENTRIES? AND (4000 SZA CLA JMP I FINTAC ISZ FINTAC JMP I FINTAC GETCN, 0 / FETCHH, 0 /FETCH DEVICEHANDLE, ENTER WITH /DEVICENUMBER IN AC, DEVICEENTRY IS SOTRED AFTER CALLING LOC AND (77 DCA FET5 RDF TAD [CIF CDF 0 DCA FET4 RDF TAD (CDF 0 DCA FET3 TAD I FETCHH /FETCH HANDLER ADDR ISZ FETCHH DCA FET1 TAD FET5 SZA CLA /TEST FOR TTY WHICH IS SPECIAL JMP FET2 TAD (TTYIN JMP FET3 FET2, CIF CDF 0 JMS I (USRIN /LOAD USR IF NOT YET IN CORE CDF 0 CIF 10 TAD FET5 JMS I (200 1 FET1, HLT HLT /ERROR HALT TAD FET1 FET3, HLT DCA I FETCHH ISZ FETCHH FET4, HLT JMP I FETCHH FET5, 0 / LO1ERM, TEXT /LO1 ERROR/ / / / / / LO1ERR, 0 JMS CLLI0 JMS TELE LO1ERM JMS SEND0 JMS TTYOUT JMS CLLO1 CDF 10 TAD (232 /SIMULATE ^Z DCA I LO1 CDF 0 JMP LO1EOF / / / / / LO1STA, 0 /ROUTINE TO RESTORE ENTRY OF GETLO1 TAD (STARGE DCA LO1NEX JMP I LO1STA / / / / / / / / / LO1SUB, 0 CLL CLA JMS CLLO1 JMS GOSTR DLO1 JMS USROUT JMP I LO1SUB / / / / LO1MSG, TEXT /EOI LO1/ WNEGQ, JMS I [DOSA2 WNEGQ2, JMS ETHF40 DCA NUMBER /WAITING FOR CORRECT BLOCK TAD REQSL DCA WNEG1 JMS MOD17I TAD NUMBER SNA CLA /IS IT A GOOD QSL JMP GOODQ JMS MOD17I TAD NUMBER SNA CLA JMP GOODQ JMP LAB22 /IGNORE GOODQ, TAD NUMBER DCA REQSL /MAKES SEND ALLOWED JMP LAB22 WNEG1, 0 ETHF40, 0 JMS ETHF HLT TAD [-40 JMP I ETHF40 PAGE
/ / INFOPU, 0 TAD WCBFIB /NEW ETH BLOCK? CIA TAD [ETHLE SZA CLA JMP LAB20 /NO STA /SET UP POINTERS TAD BFIB DCA X4 /AUTOINDEX X4 FOR FETCH JMS ETHF /FETCH CHAR FROM ETH JMP LAB22 /CAN NOT USE A NULL BUFFER DCA RCHAR JMS CHATER /IS CONNECTION RESTARTET? 37 JMP RESTAR /YES JMS CHATER 36 JMP DRIVMS /DRIVERMSG? JMS OKSTR /TEST IF IT IS A POSSIBLE STREAM JMS NEGQSL /IT IS NOT, THIS INFO IS NONSENCE TAD RCHAR TAD [-40 DCA RSTRM /SAVE STREAMNO TAD RSTRM /TEST IF STREAM IS DEFINED, IF YES /INCREMENT PAL BLOCK NUMBER TAD LI2FNP /FILENAME POINTER IF CLOSE DCA SAVFP TAD LI2FL DCA SAVLE JMS OS8OUT /SAVE!!! TAD SAVLE /ONLY RETURN IF ALL OK, SAVE BLOCK INFO DCA LI2FL TAD SAVBLO DCA LI2BLO JMS CLLI2 /SET LI2 FREE DCA I SWIRX JMP I SAVLI2 / / LI2 FILE INFO TABLE / LI2DEV, 0 /DEVICE NUMBER LI2HA, 0 /ENTRY POINT OF HANDLER LI2BLO, 0 /LI2 DEVICE POSITION LI2FL, 0 /BLOCKS WRITTEN LI2FNP, LI2NAM LI2NAM, 0 0 0 0 / PAGE
/ / / / SAVLI3, 0 TAD WCLI3 SPA CLA JMP I SAVLI3 TAD WCLI3 DCA SAVWC TAD LI3DEV DCA SAVDEV TAD LI3HA DCA SAVHA TAD (LI3BU DCA SAVBU TAD (-LI3BUL%2 AND (3700 TAD (4010 DCA SAVPA TAD LI3BLO DCA SAVBLO TAD LI3FNP DCA SAVFP TAD LI3FL DCA SAVLE JMS OS8OUT TAD SAVLE DCA LI3FL TAD SAVBLO DCA LI3BLO JMS CLLI3 DCA I SWIRX JMP I SAVLI3 / /LI3 FILE INFO TABLE / LI3DEV, 0 /CONTAINS DEVICENUMBER LI3HA, 0 /ENTRY POINT OF HANDLER LI3BLO, 0 /ACTUAL BLOCK NUMBER LI3FL, 0 /OS8BLOCK WRITEN LI3FNP, 0 LI3NAM /POINTER TO FILENAME LI3NAM, 0 /FILENAMETABLE 0 0 0 /EXTENSION STARTS WITH 6060 / / / / / OS8OUT, 0 /GENEAR SAVE ROUTINE JMS I SAVHA SAVPA, 0 /FILED BEFORE CALL SAVBU, 0 SAVBLO, 0 JMP OS8ERR TAD SAVPA /NOTHING SPECIAL BSW CLL RAR AND (17 /CALC OS8BLOCKS WRITTEN DCA SAVPA TAD SAVBLO TAD SAVPA DCA SAVBLO TAD SAVLE TAD SAVPA DCA SAVLE OS8RET, JMS CLOSE /CLOSE NECESSARY? WC=1 JMS USROUT JMP I OS8OUT SAVHA, 0 SAVWC, 0 / / OS8ERR, JMS CLLI0 /FORCE MSG JMS TELE OS8MSG OS8ER1, JMS SEND0 JMS TTYOUT JMS USROUT /USR OUT NECESSARY, THEN DO IT CDF 20 /WAIT FOR MSG WRITTEN TAD I (TTYAC SZA CLA JMP .-2 CDF 0 JMP SHUTD /FORCE ON SHUTDOWN BECAUSE TOO MUCH /IS WRONG AND BEHAVEOUR OF SYSTEM CAN NOT LONGER BE PREDECTED / / OS8MSG, TEXT /OS8 ER, RESTART/ EOI23, 1 INEOI, 0 P1 DCA EOI23 P1 DCA WCBFIB P1 DCA I EORFX DCA I SWIRX P1 DCA WCLIX JMP I INEOI / INTV, 0 TAD RCHAR TAD I INTV ISZ INTV SPA CLA TAD (200 /NOT IN INTERVALL, FORCE RUTURN+1 TAD RCHAR TAD I INTV ISZ INTV SPA SNA CLA JMP I INTV /OK IN INTERVALL ISZ INTV JMP I INTV PAGE
/ / / / / / / / / / / / / SAVDEV, 0 /DEVICENUMBER FOR SAVE EXTP, 0 /POINTER TO SAVEFILE EXTENSION CLOSE, 0 TAD SAVWC SNA CLA CLOS2, JMP I CLOSE /NO CLOSE NECESSARY JMS USRIN TAD SAVDEV CDF 0 CIF 10 JMS I (200 4 SAVFP, 0 /POINTER TO FILENAME SAVLE, 0 JMP CLOER CLOS1, NOP /USED FOR RETURN FROM INIT CLOSEF TAD SAVFP TAD (3 DCA EXTP TAD I EXTP /GET EXTENSION AND (77 IAC TAD (-72 SNA CLA TAD (7 TAD I EXTP IAC DCA I EXTP TAD SAVFP /OPEN TENTATIVE FILE DCA ENTFP TAD SAVDEV CDF 0 CIF 10 JMS I (200 3 ENTFP, 0 /OINTER TO FILENAME 0 JMP ENTERR DCA SAVLE /0 SAVLE INDICATES NEW FILE TAD ENTFP DCA SAVBLO /STARTING BLOCK OF NEW FILE JMS USROUT JMP I CLOSE / / CLOER, CLL CLA JMS TELE CLOMSG JMP OS8ER1 /MSG WITH RESTART ENTERR, CLL CLA JMS TELE ENTMSG JMP OS8ER1 /MSG WITH RESTART / / CLOMSG, TEXT /CLOSE ERROR RESTART!/ ENTMSG, TEXT /ENTER ERROR RESTART!/ / / / / / / / / / / SAVLIX, 0 JMS RESWC /RESTORE WC JMS SAVLI2 JMS SAVLI3 JMS SETLIX /RESTORE NEW POINTERS JMP I SAVLIX / / / STOPST, 0 /ROUTINE TO STOP STREAM TAD I STOPST ISZ STOPST CMA AND SSTAT /MASC OUT STREAM TO STOP DCA SSTAT JMP I STOPST / / / GOSTR, 0 TAD I GOSTR AND DEFSTR /SET ONLY DEFINED STREAMS CMA AND SSTAT /MASC OUT TO PREVENT OVERFLOW TAD I GOSTR ISZ GOSTR DCA SSTAT JMP I GOSTR TTYOUT, 0 CIF 20 JMS I (TTYOU1 JMP I TTYOUT TTYIN, 0 SNA CLA JMP .+5 P4 TAD TTYIN DCA TTYIN P1 CIF CDF 20 JMS I (TTYIN1 JMP I TTYIN PAGE
/ * F I L E M . B R * / / / FILEM, 0 /ROUTINE PERFORMS SAVE AND FETCH OF JMS GETLO1 /GET LO1 INFO IF THERE IS ANY OR BUF FREE JMS GETCD /ALL SORT OF INFO TAD WCLI0 SMA CLA JMS TTYOUT /WRITE TTY OUTPUT INFO (INTERUPTDRIVEN ) JMS SAVLI1 /KICK ON LPT IF NECESARY JMP I FILEM / / / / / GETCD, 0 /CALLS TTYIN FOR CD IF CD AND TTY IS FREE TAD WCCD SPA CLA JMP I GETCD JMS TTYIN /TTY IS SELFLOCKING JMP I GETCD / / / / / TELE, 0 /PUT TEXTSTRING IN LI0 BUF TAD I TELE /FETCH POINTER TO STRING ISZ TELE DCA TELE1 RDF TAD [CIF CDF 0 DCA TELER+1 /DATA FIELD MUST BE CALLING FIELD RDF TAD (CDF 0 DCA TELE7 JMS WHERE1 /SET LI0 AND WCLI0 FROM CORRECT FIELD TAD WCLI0 /BUFFER FREE? SMA CLA JMP TELER TELE2, TAD I TELE1 BSW JMS TELE3 JMP TELER /FINITO OR BUFFER IS FULL TAD I TELE1 JMS TELE3 JMP TELER ISZ TELE1 JMP TELE2 TELER, JMS WHERE2 HLT JMP I TELE TELE1, 0 / / / / / / / TELE3, 0 AND (77 SNA JMP TELE4 ISZ TELE3 /NOT FINITO TAD [-40 SPA JMP TELE5 TAD (240 TELE6, AND (377 CDF 10 DCA I LI0 TELE7, HLT /SET FIELD FOR FETCH OF TEXT ISZ LI0 ISZ WCLI0 JMP I TELE3 JMP TELER /BUFFER IS FULL TELE5, TAD (340 JMP TELE6 TELE4, TAD (215 /OUTPUT CR JMP TELE6 / / / / SEND0, 0 /FILLS LI0 WITH 0 JMS FLD0 DCA SEND0R+1 CDF 10 DCA I LI0 ISZ LI0 ISZ WCLI0 JMP .-3 SEND0R, JMS WHERE2 HLT JMP I SEND0 / WHERE1, 0 TAD TELE7 DCA .+1 HLT /CONTAINS CDF 0 OR 20 TAD I (LI0 /IF FIELD IS 0, THIS IS A NOP ROUTINE DCA LI0 TAD I (WCLI0 DCA WCLI0 JMP I WHERE1 / / WHERE2, 0 TAD TELE7 DCA .+1 /RESTORE POINTER AND WC TO CALLING FIELD HLT TAD LI0 DCA I (LI0 TAD WCLI0 DCA I (WCLI0 JMP I WHERE2 / / / / / / / / SHUTD, CDF 20 TAD I (WF SZA CLA JMP SHUTD CDF CIF 0 IOF /THIS IS END OF PROGRAM CAF /CLEAR ALL FLAGS JMP I (7600 / / BUFFER CLEAR ROUTINES / CLBFOA, 0 CDF 20 TAD (ETBFOA ETHA DCA I (BFOA TAD (ETHLE DCA I (WCBFOA CDF 0 JMP I CLBFOA / / PAGE
CLBFIA, 0 CDF 20 TAD (ETBFIA ETHA DCA I (BFIA TAD (ETHLE DCA I (WCBFIA CDF 0 JMP I CLBFIA / / CLBFOB, 0 TAD (ETBFOB DCA BFOB TAD (ETHLE DCA WCBFOB JMP I CLBFOB / / CLBFIB, 0 TAD (ETBFIB DCA BFIB TAD (ETHLE DCA WCBFIB JMP I CLBFIB / / CLLI0, 0 RDF TAD [CIF CDF 0 DCA CLLI0R CIF CDF 0 TAD (LI0BU DCA LI0 TAD (LI0BUL DCA WCLI0 CLLI0R, HLT JMP I CLLI0 / / CLLI1, 0 /SPECIAL FOR LPT BUF TAD (LI1BU DCA LI1 TAD (LI1BUL DCA WCLI1 DCA LPTPFL /LP PROCESSED FLG CLEAR IFDEF DRIVS < IOF > IFDEF MLPT < / / DISABLE BUFFER SET 0 FOR TEST / STA /FILL LPBUF WITH 0 TAD LI1 DCA X0 CDF 10 DCA I X0 ISZ WCLI1 JMP .-2 CDF 0 TAD (LI1BUL DCA WCLI1 > DCA LPPUT /CLEAR RELATIVE POINTERS IFDEF DRIVS < ION > DCA LPGET P1 DCA EOILP /SET EOIFLG TO FORCE FF JMP I CLLI1 / / CLLI2, 0 TAD (LI2BU DCA LI2 TAD (LI2BUL DCA WCLI2 JMP I CLLI2 / / CLLI3, 0 TAD (LI3BU DCA LI3 TAD (LI3BUL DCA WCLI3 JMP I CLLI3 / / CLCD, 0 TAD (CDBU DCA CD TAD (CDBUL DCA WCCD JMP I CLCD / / / / CLEAR, 0 CLA CLL DCA TOCANC /SET UP BLOCK NUMBER STUFF P1 DCA SENDNO P1 DCA EXPNO DCA REQSL P1 DCA RECNO / / O BUFFERS ARE TREATED BY INIT AND FILLED WITH INFO / JMS CLBFIA DCA WCBFIB JMS CLLI1 JMS CLLI2 JMS CLLI3 DCA WCLO0 DCA WCLO1 DCA WCCD /SET COMMAND DECODER EMPTY JMP I CLEAR / / / CLLO0, 0 TAD (LO0BU DCA LO0 TAD (LO0BUL DCA WCLO0 JMP I CLLO0 / / CLLO1, 0 TAD (LO1BU DCA LO1 TAD (LO1BUL DCA WCLO1 JMP I CLLO1 / / / PAGE
FLD0, 0 RDF AND (70 TAD [CIF CDF 0 CDF 0 JMP I FLD0 LO1FMI, ZBLOCK 3^15-1 LO1FMA, 0 DIALM1, TEXT /DIAL NUMBER 01 47 53 18/ DIALM2, TEXT /AND IF LINE IS READY, PRESS ANY CHARACTER/ INTER1, JMS CLLI0 JMS TELE INTER2 JMS SEND0 JMS TOUT JMP SHUTD INTER2, TEXT /UNRECOGNISED INTERUPT/ STABUF, 0 TAD (STA1-1 /SET UP POINTERS DCA X0 TAD (ETBFOB-1 DCA X3 STA2, TAD I X0 AND [RUBOUT SNA JMP STA3 CDF 10 DCA I X3 ISZ WCBFIB CDF 0 JMP STA2 STA3, JMS OBF0 JMP I STABUF STA1, 37 /RESTART BUFFER "D; "A; "V; "O; "S; 0 PAGE
/ LPT OUTPUT FOR INSPECTION LIPTOU, IOF MSPH OUL2, TAD (215 JMS LPPRIN TAD DOSAP DCA DOSAL TAD DOSAL DCA DOSAF TAD (214 SKP OUL3, TAD (215 /FIRST TIME NEW PAGE, SECOND LF JMS LPPRIN TAD (-14 DCA INSPCN INSP1, JMS BLANC 1 JMS PRINT DOSAL, 0 P1 TAD DOSAL DCA DOSAL TAD DOSAL CIA TAD (DOSAMA SMA CLA JMP INSP2 TAD (DOSAMI DCA DOSAL INSP2, TAD DOSAF CIA TAD DOSAL SNA CLA JMP EOOUT /END OF OUPUT ISZ INSPCN JMP INSP1 JMP OUL3 INSPCN, 0 DOSAF, 0 EOOUT, TAD (215 JMS LPPRIN JMP DRIINF /PRINT DRIVER INFO EOUT2, TAD (215 JMS LPPRIN TAD (214 JMS LPPRIN JMP ININF LPPRIN, 0 6666 CLA CLL 6661 JMP .-1 JMP I LPPRIN DRIINF, TAD (214 JMS LPPRIN CDF 20 TAD I (LIPP0 CDF 0 DCA DOSAL /SAVE POINTER TAD DOSAL DCA DOSAF OUL22, TAD (215 JMS LPPRINT TAD (-14 DCA INSPCN INSP12, JMS BLANC 1 CDF 30 TAD I DOSAL CDF 0 DCA LIPTOU /ROOM IS RARE JMS PRINT LIPTOU ISZ DOSAL TAD DOSAL CIA TAD (LIPPMA SMA CLA JMP INSP22 TAD (LIPPMI DCA DOSAL INSP22, TAD DOSAF CIA TAD DOSAL SNA CLA JMP EOUT2 ISZ INSPCN JMP INSP12 JMP OUL22 BLANC, 0 TAD I BLANC ISZ BLANC CIA DCA BLANC1 TAD (240 JMS LPPRIN ISZ BLANC1 JMP .-3 JMP I BLANC BLANC1, 0 WOHER, 0 TAD NEGQSL JMS DOSA2 JMP I WOHER WOHER2, 0 TAD (7000 TAD EXPNO JMS DOSA2 JMP I WOHER2 PAGE
PRINT, 0 TAD I PRINT DCA PRINT1 PRIN4, CDF 0 TAD I PRINT1 /ARGUMENT FETCH CDF 0 RAL DCA PRINT1 RAR DCA LINKP JMS BLANC 1 TAD (-4 DCA PRINT2 PRINT3, CLL CLA TAD LINKP RAL CLA TAD PRINT1 RAL; RTL DCA PRINT1 RAR DCA LINKP TAD PRINT1 AND (7 TAD (260 JMS LPPRIN ISZ PRINT2 JMP PRINT3 JMS BLANC 1 ISZ PRINT JMP I PRINT PRINT1, 0 PRINT2, 0 LINKP, 0 SEBLO, 0 TAD (ETBFOB-1 DCA X0 TAD (1000 DCA DOSA3 TAD (-6 DCA DOSA5 JMS DOSA JMP I SEBLO REBLO, 0 TAD (ETBFIB-1 DCA X0 DCA DOSA3 TAD (-5 DCA DOSA5 JMS DOSA JMP I REBLO DOSA5, 0 DOSA, 0 TAD DOSA5 DCA X1 DOSA1, CDF 10 TAD I X0 TAD DOSA3 CDF 0 JMS DOSA2 ISZ X1 JMP DOSA1 JMP I DOSA DOSA2, 0 DCA I DOSAP P1 TAD DOSAP DCA DOSAP TAD (DOSAMA CIA TAD DOSAP SPA SNA CLA JMP I DOSA2 TAD (DOSAMI DCA DOSAP JMP I DOSA2 DOSA3, 0 DOSAP, DOSAMI ININF, TAD (ETBFIA DCA POINT1 TAD (CDF 20 DCA PRIN4 INI1, JMS PRINT POINT1, HLT ISZ POINT1 SKP JMP INI2 ISZ INI3 JMP INI1 TAD (-20 DCA INI3 TAD (215 JMS LPPRIN JMP INI1 INI3, -20 INI2, TAD (215 JMS LPPRIN TAD (214 JMS LPPRIN JMP SHUTD PAGE DOSAMI, ZBLOCK 50^6-1 DOSAMA, 0
FIELD 1 *0 ZBLOCK 7600-.
/ CODE FOR LIPI TEST / / CODE: 0=OK / 1=PARITY ERROR / 2=LIN OFF ERRO / 3=CHECKSUM ERROR / 4=HEADER ERROR / 5=WAIT FOR BETTER LINE / 6=SYNC MISSED FIELD 2 *10 / / AUTOINDEX / Y0, 0 Y1, 0 Y2, 0 Y3, 0 Y4, 0 Y5, 0 Y6, 0 Y7, 3777 / / SWAP AEREA FROM PAGE00 / *20 ZBLOCK 30 / / FIELD 2 BUFFERS / BFOA, ETBFOA WCBFOA, ETHLE BFIA, ETBFIA WCBFIA, ETHLE LO1F2G, 0 INP, 0 OUTP, 0 / / / HANDLER FLAGS / / / LIPI FLAGS / RFLG, 1 / / LIP STATUS INFO / LSEND, 0 STATE, 0 CHARO, 0 /RECEIVED CHAR RBIT, 0 /BIT INFO FROM MODEM REJECT, 0 SUM, 0 /CHECKSUMM FOR RECEIVED CHARS SFLG, 0 HEATAX, 0 ETHCN, 0 CACN, 0 /CHARACTER COUNTER FOR DECODE FLDX, CDF 0 / HEADTER TABLE HEATA, 1 160 STATIO, 141 SYYNC, 0 SYNCN, 0 PAGE
/ * I N T H A N . B R * / / / INTERUPT SKIPLINE AND INTERUPT DRIVEN HANDLERS / / INTHA, MSKR /SKIP ON MODEM RECEIVE FLAG SKP JMP LIPI /TREAT MODEM INPUT MSKT /SKIP ON MODEM SEND FLAG SKP JMP LIPO PSKF /SKIP ON LPTFLAG SKP JMP LPTHA TSF /TTY SEND FLAG SKP JMP TTYSF KSF SKP JMP TTYRF /TTY RECEIVE CDF CDF 0 JMP I (INTER1 /UNRECOGNISED INTERUPT / / / SIMPLE INTERUPTDRIVEN LPTHANDLER / / LPTHA, PCLF JMS LPTCA JMP LPTHA1 CDF 0 DCA I (LPTPFL JMP DISMIS TAD [-2 /8 CHARS AT A TIME DCA LPCNT /SET UP CHAR COUNTER LPT1, JMS LPTCA /TEST@ / / FULTE, TAD INCA JMS PUTTE JMS ECHO ISZ TABCN JMP .+3 TAD [-7 DCA TABCN FULTE1, JMS KICKON ISZ INP ISZ INWC JMP DISMIS /NOT YET FULL INFULL, JMS KICKON JMS SETFEL /POINTER MAY BE IN F20 M1 TAD RF SZA CLA JMP INFUL1 /POINTERS ARE SET BY GETLO1!!! TAD [CDBU DCA I [CD TAD [CDBUL DCA I [WCCD INFUL1, CDF 20 DCA RF JMP DISMIS / / KICK, JMS KICKON /KICK ON OUTPUT IF NECESSARY JMP DISMIS / / KICKON, 0 TAD TTYAC SZA CLA JMP I KICKON /TTY IS ACTIV TCF /CLEAR TTY FLAG JMS ECHOG JMP I KICKON /NO MOORE CHARS TLS CLL CLA P1 DCA TTYAC JMP I KICKON / / RF, 0 /READ FLG IS 0 1 FOR CD AND 2 FOR LO1 TABCN, 0 INWC, 0 INCA, 0 CRCN, 0 CRWC, 0 TTYAC, 0 PAGE
/ / / / / TTYOU1, 0 JMS FLD2 DCA OURET1 IFNDEF MTTY < CIF 0 JMS CLLI0 JMP OURET1 > IFNDEF ODTEST <KIE> TAD WF SZA CLA JMP OURET P1 DCA WF /SET WRITE FLAG TAD (LI0BU DCA OUTP TAD (LI0BUL DCA OUTWC JMS FILEC OURET, P1 KIE CLA IFDEF ODTEST < TAD WF SZA CLA JMP .-2 IOF > OURET1, HLT JMP I TTYOU1 / / TTYSF, TCF /SEND INTERUPT COMES TO HERE JMS ECHOG JMP TTYSF1 /NO MORORE CHARS IN ECHO BUF TLS CLL CLA JMP DISMIS / TTYSF1, DCA TTYAC /CLEAR ACTIV FLAG TAD WF SNA CLA JMP DISMIS /NO OUTPUT JMS FILEC JMP DISMIS / / WF, 0 /WRITE FLAG OUTWC, 0 / / / / ECHO, 0 SNA /ENTER WITH OR WTHOUT CHA TAD INCA DCA I ECHOPU ISZ ECHOPU TAD ECHOPU CIA TAD (EBUMA SMA CLA JMP I ECHO TAD (EBUMI DCA ECHOPU JMP I ECHO / / ECHOG, 0 TAD I ECHOGE SNA JMP I ECHOG /NO CHAR IN BUF DCA ECHOG1 /SAVE CHAR ISZ ECHOG /INCR RETURN DCA I ECHOGE /CLEAR CHAR ISZ ECHOGE TAD ECHOGE CIA TAD (EBUMA SMA CLA JMP .+3 TAD (EBUMI DCA ECHOGE TAD ECHOG1 JMP I ECHOG ECHOG1, 0 / / OUTCA, 0 ECHOPU, EBUMI ECHOGE, EBUMI / / FILEC, 0 TAD (-5 DCA FILEC3 /ONLY 5 CHARS AT A TIME FILEC1, TAD OUTWC SMA CLA JMP CLWF CDF 10 TAD I OUTP CDF 20 DCA OUTCA ISZ OUTP ISZ OUTWC NOP TAD OUTCA SNA JMP CLWF /IGNORE NULLS JMS ECHO TAD OUTCA TAD (-215 SZA CLA JMP .+3 TAD (212 JMS ECHO /CR IS FOLOWED BY LF ISZ FILEC3 JMP FILEC1 FILEC2, JMS KICKON JMP I FILEC FILEC3, 0 / / PAGE
/ / CRLFIN, 0 TAD (215 JMS ECHO TAD (212 JMS ECHO JMP I CRLFIN / / / PUTTE, 0 CDF 10 DCA I INP CDF 20 JMP I PUTTE / / CDINIT, 0 JMS CRLFIN TAD ("* JMS ECHO JMS KICKON JMP I CDINIT / / LOINIT, 0 JMS CRLFIN TAD ("# JMS ECHO JMS CRLFIN JMS KICKON JMP I LOINIT SETFEL, 0 TAD FLDX DCA .+1 HLT JMP I SETFEL EBUMI, ZBLOCK 130 EBUMA, 0 PAGE
LIPIT4, 0 TAD CHARO DCA LIPI4X TAD (-12 DCA LIPI4Y DCA CHARO JMS LIPIT2 ISZ LIPI4Y JMP .-2 TAD LIPI4X DCA CHARO JMP I LIPIT4 LIPI4X, 0 LIPI4Y, 0 LIPIT5, 0 TAD STATE DCA .+2 JMS CODE HLT TAD LSEND DCA .+2 JMS CODE HLT JMP I LIPIT5 / TEST ROUTINES FOR LINE DRIVER CLWF, DCA WF JMS SETFEL TAD (LI0BU DCA I (LI0 TAD (LI0BUL DCA I (WCLI0 CDF 20 JMP FILEC2 SETCR, 0 TAD [-7 DCA TABCN TAD INP DCA CRCN TAD INWC DCA CRWC JMP I SETCR LIPIT1, 0 JMS LIPTE1 TAD (1000 DCA XX1 TAD (4000 DCA XX2 JMP I LIPIT1 LIPIT3, 0 JMS LIPTE1 TAD (0 DCA XX1 TAD (2000 DCA XX2 JMP I LIPIT3 LIPTE1, 0 TAD (-12 DCA LIPCN TAD (NOP /ENABEL SAVE DCA LIPIX2 TAD LIPP0 TAD (14 JMS LIPTE2 DCA LIPP0 TAD LIPP0 DCA LIPPX JMP I LIPTE1 LIPTE2, 0 DCA LIPTX2 TAD LIPTX2 CIA TAD (LIPPMA /TEST FOR BUFFER OVERFLOW SPA CLA JMP .+3 TAD LIPTX2 JMP I LIPTE2 TAD (LIPPMI JMP I LIPTE2 LIPTX2, 0 LIPIT2, 0 LIPIX2, NOP TAD XX1 TAD CHARO JMS LIPTE3 ISZ LIPCN JMP I LIPIT2 TAD .-1 DCA LIPIX2 /ENOUGT PRINTED JMP I LIPIT2 LIPTE3, 0 CDF 30 DCA I LIPPX CDF 20 P1 TAD LIPPX JMS LIPTE2 /TEST OVERFLOW DCA LIPPX JMP I LIPTE3 CODE, 0 TAD I CODE ISZ CODE TAD XX2 JMS LIPTE3 JMP I CODE LIPP0, LIPPMI LIPPX, LIPPMI XX1, 0 XX2, 0 LIPCN, 0 PAGE
/ * H E X A 3 . B R * / VERSION 51 VOM 2. 8. 76 / COMMANDECODER / ============= / / CDEC, 0 /COMMANDDECODER JMS FLD2 DCA CDECF CDF 0 TAD I [WCLO0 /LO0 FREE? SPA CLA JMP CDECF TAD I [WCLI0 /LI0 FREE? SMA CLA JMP CDECF CDF 20 JMS PA0FET JMS ONLYCR /IS IT AN ERROR BUFFER JMS REW JMS CAN JMS STAT JMS BYE JMS INOUT CDRET, CLL CLA DCA WCCD /SET CD BUF TO FREE CDECRE, JMS PA0STO /SWAP PAGE02 BACK CIF 0 JMS I [USROUT CDECF, HLT JMP I CDEC / / REW, 0 /TEST FOR REWIND JMS CLCD2 TAD [-4 DCA REWCN TAD [REWPA DCA REWP REW1, JMS CDCA /FETCH CHAR JMP I REW /THERE ARE NO MORE CHARS TAD I REWP ISZ REWP DCA REW3 JMS CDTE REW3, HLT /CHARAKTER TO BE TESTED SKP JMP I REW /ITS NOT A REWIND ISZ REWCN JMP REW1 JMP REW2 REWCN, 0 REWP, 0 REWPA, "R;"E;"W;", REW2, JMS CDCA /GET CHAR FROM CD JMP CDERR JMS CDTE "O JMP ISO /REWIND OUTPUT=LO1 JMS CDTE "I JMP ISI /REWIND INPUT JMP REW2 / / ISO, JMS VALID DLO1 SKP JMP CDER2 /STREAM NOT DEFINED JMS REWIND 41 ISO1, JMS CLLO12 /SIMULATE ^Z P1 /REWIND IS ON LO1 ALSO A CANCLE CDF 0 /SET EOIFLG AND CLEAR UNPACK SWITCH DCA I (EOIFLG DCA I (SWISE+1 CDF 10 TAD (232 DCA I LO1 CDF 20 JMP CDRET / / ISI, JMS CDCA /WHICH STREAM? JMP CDERR JMS CDTE "2 JMP IS2F JMS CDTE "3 JMP IS3F JMS CDTE "1 JMP IS1F JMS CDTE "0 NOP JMP CDERR / / IS2F, JMS VALID /TEST IF STREAM IS VALID DLI2 SKP JMP CDER2 JMS REWIND 44 JMS CLLI22 CDF 10 TAD (232 DCA I LI2 CDF 20 P1 DCA WCLI2 /SET LI2 BUFFER FULL JMP CDRET / PAGE
IS1F, JMS REWIND 42 JMP CDRET / RELA, 0 STA TAD CACN /CACN-1 SPA CLA CLL AND (7 DCA CACN TAD (CDBU+1 TAD CACN CIA TAD CD AND (77 JMP I RELA / / / IS3F, JMS VALID DLI3 SKP JMP CDER2 JMS REWIND 46 JMS CLLI32 CDF 10 TAD (232 DCA I LI3 CDF 20 P1 DCA WCLI3 JMP CDRET CDERR, CIF 0 JMS I [TELE CD1MS CDERET, CIF 0 JMS I (SEND0 JMS TTYOU1 JMP CDRET CD1MS, TEXT /TRY AGAIN/ CD2MS, TEXT /STREAM NOT DEFINED/ CDER2, CIF 0 JMS I [TELE CD2MS JMP CDERET / / / CDCA, 0 CDF 10 /CHARKETER FETCH ROUINTE TAD I CD CDF 20 DCA CDCAR ISZ CD ISZ WCCD SKP JMP I CDCA JMS CDTE /TEST FOR CR 215 JMP I CDCA ISZ CDCA JMP I CDCA CDCAR, 0 /CONTAINS FETCHED CHAR / / / CDTE, 0 /CHARAKTER TEST ROUINTE TAD I CDTE CIA ISZ CDTE TAD CDCAR AND [RUBOUT SZA CLA ISZ CDTE JMP I CDTE / / / VALID, 0 /ROUTINE TO TEST IF STREAM DEFINED TAD I VALID ISZ VALID AND DEFSTR SNA CLA ISZ VALID JMP I VALID / / / REWIND, 0 /SETUP REWINDBLOCK FOR LINE JMS LO0BL2 /FILL LO0 WITH BLANCS TAD (44 /REWIND CODE IS 44 DCA I LO0 CDF 20 TAD I REWIND ISZ REWIND ISZ LO0 CDF 10 DCA I LO0 CDF 20 JMS CLLO02 JMP I REWIND / / / LO0BL2, 0 /FILL LO0 WITH BLANCS, RETURNS WITH DF10 JMS CLLO02 CDF 10 TAD [40 DCA I LO0 ISZ LO0 ISZ WCLO0 JMP .-4 JMS CLLO02 /RETURNS WITH DF 10 JMP I LO0BL2 CANMS1, TEXT /CANCLE ERROR/ / / / / / PAGE
CAN, 0 /TEST FOR CANCLE JMS CLCD2 M3 /-3 IN AC DCA CANCN TAD (CANTA DCA CANP CAN1, JMS CDCA /FETCH CHAR JMP I CAN TAD I CANP ISZ CANP DCA .+2 JMS CDTE HLT SKP JMP I CAN /NOT A CANCLE ISZ CANCN JMP CAN1 / / IS IT INPUT OR OUTPUT / CAN2, JMS CDCA JMP CANER1 JMS CDTE "O JMP CANO JMS CDTE "I JMP CANI JMP CAN2 / / CANI, JMS CDCA JMP CANER2 /WHICH INPUT? JMS CDTE "1 JMP CANLI1 JMS CDTE "2 JMP CANLI2 JMS CDTE "3 JMP CANLI3 JMP CANER1 CANCN, 0 CANP, 0 CANTA, "C;"A;"N / / CANO, JMS VALID DLO1 SKP JMP CDER2 CIF 0 JMS I (KANZ 41 JMS CLLO02 JMP ISO1 /SIMULATE ^Z ETC / / CANLI1, CIF 0 JMS I [TELE CLI1ER JMP CDERET / / CANLI2, JMS VALID DLI2 SKP JMP CDER2 CIF 0 JMS I (KANZ 44 JMS CLLO02 CIF 0 JMS I (CANC DLI2 JMP CDRET / / CANLI3, JMS VALID DLI3 SKP JMP CDER2 JMS CLLO02 CIF 0 JMS I (KANZ 46 CIF 0 JMS I (CANC DLI3 JMP CDRET / / CANER1, CIF 0 JMS I [TELE CANMS1 JMP CDERET CANER2, CIF 0 JMS I [TELE CANMS2 JMP CDERET CLI1ER, TEXT /DO NOT CANCLE LI1/ / / / / / / / / / / / FLD2, 0 RDF AND (70 TAD (CIF CDF 0 CIF CDF 20 JMP I FLD2 / ONLYCR, 0 JMS CLCD2 JMS CDCA JMP CDRET /IT IS AN ERROR BUFFER JMP I ONLYCR PAGE
STAT, 0 /STATUS TAD (-4 DCA STATCN TAD (STATA DCA STATX JMS CLCD2 STAT1, JMS CDCA JMP I STAT /NOT A STATUS TAD I STATX DCA STAT2 ISZ STATX JMS CDTE STAT2, HLT /TEST THIS CHAR SKP JMP I STAT /NOT A STATUS ISZ STATCN JMP STAT1 JMP STAT3 STATCN, 0 STATX, 0 STATA, "S;"T;"A;"T STAT3, JMS CDCA SKP /MUST BE A CR JMP I STAT JMS LO0BL2 /OK FILL IN STATUS TAD (47 DCA I LO0 CDF 20 JMP CDRET / / / / / BYE, 0 /GOOD BYE FOR ETH JMS CLCD2 TAD (-3 DCA BYECN TAD (BYETA DCA BYETX BYE1, JMS CDCA JMP I BYE /NOT BYE TAD I BYETX DCA BYE2 ISZ BYETX JMS CDTE BYE2, HLT SKP JMP I BYE /NOT A BYE ISZ BYECN JMP BYE1 JMP BYE3 BYECN, 0 BYETX, 0 BYETA, "B;"Y;"E BYE3, JMS CDCA /FOLOWED BY CR SKP JMP I BYE JMS LO0BL2 TAD (53 CDF 10 DCA I (LO0BU CDF 20 JMP CDRET /RETURN MS1, TEXT /TABEL OVERFLOW/ MS2, TEXT /COMMANDLINE ERROR/ MS3, TEXT /STREAM ALREADY DEFINED/ / / / / / PAGE
INOUT, 0 /MUST BE A INPUT-OUTPUT-STRING JMS CLCD2 JMS DECODE /PERFORM DECODING JMS CLCD2 INOU1, JMS CDCA /LOOK FOR A SLASH JMP OUT1 /EXIT IF NO SLASH JMS CDTE "/ JMP INP1 /SLASH IS INPUT JMP INOU1 OUT1, DCA WCCD /WC MAY CAUSE TROUBLES IS NOT USED IN FOLL. TAD (DEVTA DCA DEVTAX /SET POINTER FOR OUTPUT TAD FCN /SET NEGATIVE NUMBER OF FILES CIA DCA FCN TAD I LO1F2G /STORE STATUS OF HANDLER DCA OUT7 OUT2, TAD I LO1FP AND (4000 SZA CLA JMP OUTER1 /TABLE OVERFLOW TAD I DEVTAX DCA NAMPO ISZ DEVTAX /POINTER TO DEVICE TAD I DEVTAX TAD (CDBU DCA CD JMS CDCA /GET CHAR JMP OUTER2 TAD (7400 /LO1 HANDLER AT 7400 1 PAGE ALLOWED DCA DEV3 JMS HADLT /WHICH HANDLER IS IT? JMP OSYS JMP ODSK JMP OTTY JMP OPTR JMP OUTER2 NAMPO, 0 /ALL HANDLER ARE EITHER CORERESIDENT OR NEED NO LOOKUP / / INOUTR, JMP I INOUT OSYS, JMS DEVNOF /USRIN DEVICE SYS OUT3, JMS FNAM JMS LOOKUP OUT4, TAD (4000 /NO SAVE THIS INFO TAD DEV2 DCA I LO1FP /DEVICENUMBER JMS FPINC TAD LOOK1 DCA I LO1FP /SAVE FILECA JMS FPINC TAD LOOK2 /SAVE FILE WC DCA I LO1FP JMS FPINC ISZ DEVTAX /POINTER TO NEXT FILE IF THERE IS ANY ISZ FCN /MORE FILES TO TREAT? JMP OUT2 TAD I LO1F2G CIF 0 JMS I (FETCHH 7400 HLT /HANDLER ENTRY FOR FIRST FILE TAD .-1 CDF 0 DCA I (LO1HA CDF 20 JMP I INOUT OUT7, 0 / / ONLY 1 PAGE HANDLER ON LO1 ALLOWED , AT 7400 / ODSK, JMS DEVNOF DEVICE DSK JMP OUT3 / / OTTY, DCA DEV2 /TTY IS NUMBER 0 DCA LOOK1 / 0 FILENAME DCA LOOK2 JMP OUT4 / / OPTR, JMS DEVNOF DEVICE PTR DCA LOOK1 DCA LOOK2 JMP OUT4 / PAGE
/ INP1, DCA WCCD /WCCD IS NOT USED IN THE FOLLOWING JMS CDCA JMP OUTER2 JMS CDTE "2 JMP INP2 JMS CDTE "3 JMP INP3 JMP OUTER2 /IS ALL WRONG / / INP2, JMS VALID DLI2 JMP INPER1 /STREAM ALREADY DEFINED JMS SETDEV /GET DEVICENO AND FILENAME 7200 /LI2 1-PAGE HANDLER AT 7200 TAD DEV2 CDF 0 DCA I (LI2DEV CDF 20 TAD DEV3 CDF 0 DCA I (LI2HA CDF 20 JMS ENTI /ENTER TENTATIVE FILE LI2NAM TAD ENT2 CDF 0 DCA I (LI2BLO /SAVE BLOCKNUMBER AND FREE SPACE DCA I (LI2FL /RESET FILE LENGHT CDF 20 JMS DEFIT 44 JMS DEFIT2 DLI2 JMS GOSTR2 DLI2 JMP INOUTR / / INP3, JMS VALID DLI3 JMP INPER1 JMS SETDEV 7000 /LI3 1-PAGE HANDLER AT 7000 TAD DEV2 CDF 0 DCA I (LI3DEV CDF 20 TAD DEV3 CDF 0 DCA I (LI3HA CDF 20 JMS ENTI LI3NAM TAD ENT2 CDF 0 DCA I (LI3BLO DCA I (LI3FL CDF 20 JMS DEFIT 46 JMS DEFIT2 DLI3 JMS GOSTR2 DLI3 JMP INOUTR / / OUTER1, CDF0



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