TITLE OPEN ;ESTABLISHES CONNECTION BETWEEN SEQUENCES OF PACKS ;AND I/O CHANNELS. IT IS CALLED UPON THE FIRST ENTRY INTO DIO. ;CHANNELS ARE ASSIGNED FROM HIGH TO LOW TO(HOPEFULLY) AVOID ;FORSE ASSIGNMENTS. PACK NAMES ARE ENTERED FROM TTY UPON THE ;FIRST ENTRY. IN THE FUTURE PACK NAMES MAY BE OPTIONALLY ;STORED IN COMMON . ENTRY OPEN, PAKFND EXTERN FLAG, BUF, MAX, NO.CHN OPDEF TTCALL [51B8] DEFINE TTYOUT (ADR) DATCHN=5 DEFINE SETCHN (%A) OPEN: 0 SETOM FLAG BEGIN: SKIPE FNDFLG# JRST .+4 TTYOUT CRLF TTYOUT [ASCIZ"PACKS: "] TTCALL 11, MOVE 6, MAX CLEARM NO.CHN MOVEI DATCHN, 20 CLEARM CRF# NEXT: SOJ DATCHN, MOVEI 1 ADDM NO.CHN CLEARM UFD CLEARM COLF# MOVE 2, [POINT 6, UFD-1, 35] MOVEI 3, 6 TTYIN: SOJL 3, LENGTH TTCALL 4, 1 CAIN 1, " " JRST .-2 CAIN 1, 015 JRST CART CAIN 1, "," JRST COMMA CAIN 1, ":" JRST COLON SUBI 1, 40 IDPB 1, 2 JRST TTYIN COLON: SKIPE COLF JRST SYNTAX SETOM COLF MOVE UFD MOVEM DEVICE CLEARM UFD JRST TTYIN - 2 CART: SETOM CRF COMMA: SOJL 6, MAXMES SETCHN INIT 17 DEVICE: SIXBIT/DSK/ 0 JRST NOTAVL CLEARM UFD+3 SETCHN LOOKUP UFD JRST NOPACK CLEARM UFD+3 SETCHN RENAME UFD JRST NOPACK CLEARM UFD+3 SETCHN LOOKUP UFD JRST NOPACK CLEARM UFD+3 SETCHN ENTER UFD 0 MOVEI 1, 17 SUB 1, DATCHN IMULI 1, 200 ADDI 1, BUF - 1 HRRM 1, LIST SETCHN USETI 1 SETCHN IN LIST JRST .+4 TTYOUT CRLF TTYOUT [ASCIZ"TRANSMISSION ERROR IN OPEN."] CALLI 12 SKIPN CRF JRST NEXT ;GO BACK FOR NEXT PACK TTCALL 11, ;EMPTY THE INPUT BUFFER TTYOUT CRLF JRA 16,(16) SYNTAX: TTYOUT [ASCIZ"SYNTAX ERROR."] JSR RESTOR TTYOUT CRLF JRST BEGIN NOTAVL: MOVE 1, DEVICE TTYOUT [ASCIZ"DEVICE "] JSR TYPE TTYOUT [ASCIZ" NOT AVAILABLE."] CALLI 12 NOPACK: MOVE 1, UFD TTYOUT [ASCIZ"CAN'T FIND "] JSR TYPE JSR RESTOR TTYOUT CRLF JRST BEGIN TYPE: 0 MOVE 2, [POINT 6, 0, 35] ILDB 3, 2 JUMPE 3, @TYPE ADDI 3, 40 TTCALL 1, 3 JRST .-4 MAXMES: TTYOUT [ASCIZ"NO MORE THAN "] MOVEI 60 ADD MAX TTCALL 1, TTYOUT [ASCIZ" PACKS ALLOWED."] CALLI 12 LENGTH: TTYOUT [ASCIZ"DEVICE OR PACK NAME TOO LONG."] JSR RESTOR TTYOUT CRLF JRST BEGIN RESTOR: 0 CLEARM FNDFLG MOVE SAVE MOVEM TTYIN+1 JRST @RESTOR SAVE: TTCALL 4, 1 CRLF: BYTE(7) 015, 012 UFD: EXP 0, SIXBIT/PAK/, 0, 0 LIST: IOWD 200, 0 ACSAVE: BLOCK 17 PAKFND: 0 MOVSI 1 HRRI ACSAVE BLT ACSAVE+16 MOVE 1, @(16) CLEAR 2, ILDB [POINT 7, 0, 34] SUBI 40 JUMPE .+3 IDPB [POINT 6, FND-1, 35] JRST .-4 INIT 17, 17 SIXBIT/DSK/ 0 JRST NODSK LOOKUP 17, FND JRST ACPUT USETI 17, 1 IN 17, FLIST JRST .+4 TTYOUT CRLF TTYOUT [ASCIZ"TRANSMISSION ERROR IN PAKFND."] CALLI 12 MOVE [ILDB 1, [POINT 7, FNDBUF-1, 34]] MOVEM TTYIN+1 SETOM FNDFLG ACPUT: MOVSI ACSAVE HRRI 1 BLT 17 JRA 16, 1(16) NODSK: TTYOUT [ASCIZ"DSK NOT AVAILABLE."] CALLI 12 FND: EXP 0, SIXBIT/FND/, 0, 0 FLIST: IOWD 20, FNDBUF 0 FNDBUF: BLOCK 20 END