LDA MEM NO - THEN 2116/2115 ALF,RAR IF MEMORY AND B7 IS SZA OVER 8K CLA,INA,RSS THEN 2116 LDA B4 NO THEN 2115 JMP CFCT CONFIGURE IT CF40X CLB CHECK FOR EAU OTB SWREG (CLEAR SWR) OCT 101100 RRR 16 INSTRUCTION SZA,RSS DID IT ROTATE? JMP *+3 YES THEN 2100/21MX LDA B6 NO THEN 2114 JMP CFCT CONFIGURE IT LIB DMA6 IF I/O BUS LDA B7 (SET 2100) SZB IS NOT ZERO INA THEN 21MX CPA B7 WAS IT 2100? JMP *+3 YES - SKIP TIMER IT DOES FUNNY THINGS OCT 100060 OR IF TIMER INA THEN 21XE CFCT RAL (MPY BY 2 - TWO WORDS PER ENTRY) ADA CPTOT ADD POINTER TO TABLE LDB A,I GET TIMING CONSTANT STB DTMC,I PUT IT IN UPPER ROUTINES STB 110B AND IN BASE PAGE INA MOVE TO LDA A,I COMPUTER TYPE AND STANDARD OPTIONS IOR CTO ADD CALCULATED OPTIONS STA CTO PUT BACK IN BASE PAGE LINK AREA LDA CFCT-2 GET 21XE MICRO TIMER INSTRUCTION CPB XETC IS THIS THE XE TIME CONSTANT? STA DTMI,I YES PUT MICRO INSTRUCTION IN TIMER ROUTINE * LDA SWRX SZA,RSS MANUAL? JMP SWRCF YES SKP * DETERMINE & CONFIGURE CONSOLE INTERFACE DRIVER * LDA SWRX GET SWR AGAIN AND B77 ISOLATE CONSOLE SELECT CODE STA CODSC UPDATE BASE PAGE SC STA CIDSC SZA IS THERE A CONSOLE? JMP *+3 YES THEN DETERMINE INTERFACE LDA CSLDY NO GET DUMMY CONSOLE JMP CF531+1 JSB CHSC,I CHECK AND SAVE SELECT CODE STA SVA SAVE IT FOR I-O LIST UPDATE LDA DCO CHECK IF LINK HAS BEEN LOADED LDB A,I GET FIRST WORD SSB IF BIT 15 SET THEN JMP CF531+1 LINK IS LOADED LDB CFSCD GET POINTER TO SELECT CODE JSB ISCR,I INITIALIZE I-O INSTRUCTIONS CLC INTP GENERATE CRS TO INTERFACE CFSC1 CLF SC CLEAR THE FLAG CFSC2 SFS SC IF FLAG RSS IS STILL JMP CF587 SET THEN 12587 LDA CFMRS IF IT CLEARED THEN 12531/12966 CFSC3 OTA SC OUTPUT MASTER RESET CFSC4 SFS SC IF FLAG RSS IS SET JMP CF966 THEN 12966 CFSC5 LIA SC CHECK IF 77 STORED CPA B77 JMP CF531 YES THEN 12531 LDA SWRX NO - RESTORE S-REG. OTA SWREG AND LDA DISN A-REG. AND LDB DIBP B-REG. HLT 22B INFORM OPERATOR OF ERROR JMP CFRG START CONFIGURATION OVER CF531 LDA CD531 GET POINTER TO 12531 LDB DCO AND DRIVER ROUTINE AREA JSB MDVR,I MOVE CONSOLE DRIVER INTO PLACE DEC -45 (NUMBER OF WORDS TO BE MOVED) JMP CFOP GO TO OUTPUT COMPUTER OPTIONS CF587 LDA CD587 GET POINTER TO 12587 JMP CF531+1 CF966 LDA CD966 GET POINTER TO 12966/8 JMP CF531+1 * CFMRS OCT 150077 CFSCD DEF *+1,I DEF CFSC1 DEF CFSC2 DEF CFSC3 DEF CFSC4 DEF CFSC5 DEF M1 SKP * AUTOMATIC CONFIGURATION * CFOP LDA SWRX GET LOADER SELECT CODE AND TYPE ALF,ALF RAL,RAL AND B777 SZA,RSS IS IT CONVERSATIONAL? JMP CFCON YES STA 111B PUT IT IN BASE PAGE AND B77 JSB CHSC,I CHECK AND SAVE SELECT CODE LDA SWRX GET POINTER TO LOADER ALF AND B7 ADA DINDD LDA A,I SZA VALID DEVICE? JMP *+3 YES HLT 72B NO - TELL OPERATOR LDA LDDY USE PSEUDO LOADER WITH HALT LDB DLDVR GET LOCATION JSB MDVR,I AND MOVE IT ABS LDVR-7700B LDA LPDYD PUT JSB TO CONSOLE LDB LPDV IN LP DRIVER JSB MDVR,I DEC -21 JSB CFM,I MOVE UTILITIES AND DRIVERS CLA LDB SWRX ELB CLB SEZ ANY REQUEST? LDA DISN YES - GET IT SEZ LDB DIBP * CFLDR STA SVA SAVE A & STB SVB B - REG. CCB SET TO REWIND SZA,RSS SHOULD I? JSB DRI,I YES LDA SVA RESTORE REGISTERS LDB SVB JMP 120B GO TO LOADER SKP * MANUAL CONFIGURATION * * SWRCF LDA CTO GET OPTIONS FOR DISPLAY OTA SWREG HLT 0 WAIT FOR COMPUTER TYPE AND OPTIONS LIA SWREG SZA,RSS IF NO INPUT SKIP UPDATE JMP SWRCS STA CTO SET THEM IN PLACE ALF,RAL AND B37 GET COMPUTER TIMING ADA CPTOT LDB A,I STB DTMC,I STB 110B LDA CFCT-2 GET 21XE MICRO TIMER INSTRUCTION CPB XETC IS THIS THE 21XE TIME CONSTANT? STA DTMI,I YES PUT INSRTUCTION IN TIMER ROUTINE * SWRCS CLA CLEAR SWITCH REGISTER OTA SWREG HLT 1 WAIT FOR CONSOLE LIA SWREG STA SWRX SAVE SWITCH REGISTER SZA IS THERE A CONSOLE JMP SWRCN YES STA SCX NO CLEAR SELECT CODE STA CODSC STA CIDSC LDA CSLDY PUT DUMMY IN CONSOLE DRIVER LDB DCO JSB MDVR,I MOVE IT INTO LOCATION DEC -45 JMP SWRLP CONTINUE WITH LINE PRINTER SWRCN ALF,ALF DETERMINE RAL,RAL CONSOLE AND B7 TYPE RAL ADA CNSLD STA TMPA INA LDB A,I LDA SWRX PICK UP PARAMETERS SZB ARE ANY REQUIRED JSB B,I YES UPDATE DRIVER LDA SWRX UPDATE SELECT CODE AND B77 JSB CHSC,I CHECK AND SAVE SELECT CODE STA CODSC STA CIDSC LDA TMPA,I MOVE DRIVER INTO LOCATION LDB DCO (CNSL DEF) JSB MDVR,I DEC -45 SKP SWRLP CLA CLEAR SWITCH REGISTER OTA SWREG HLT 2 WAIT FOR LP LIA SWREG STA SWRX STA LPDSC SZA,RSS IS THERE A LP JMP CFLPD NO - USE DUMMY AND B77 YES JSB CHSC,I CHECK AND SAVE SELECT CODE STA LPDSC LDA SWRX GET LP TYPE ALF,ALF RAL,RAL AND B7 ADA LPDF GET POINTER TO LP DRIVER LDA A,I LDB LPDV JSB MDVR,I MOVE LP DRIVER INTO LOCATION DEC -21 JMP *+5 CFLPD LDA LPDYD USE JSB TO CONSOLE LDB LPDV JSB MDVR,I MOVE DRIVER L.P. INTO PLACE DEC -21 * LDA MEM GET CALCULATED MEMORY OTA SWREG OUTPUT IT HLT 3 WAIT FOR OPERATOR LIA SWREG GET INPUT AND B70K MASK OFF LOWER BITS STA MEM SKP CLA CLEAR SWITCH REGISTER OTA SWREG HLT 4 WAIT FOR LOADING DEVICE LIA SWREG GET LOADER SELECT CODE AND TYPE AND B777 STA 111B PUT IT IN BASE PAGE AND B77 JSB CHSC,I CHECK AND SAVE SELECT CODE LDA 111B GET POINTER TO LOADER ALF,ALF RAL,RAL AND B7 ADA DINDD LDA A,I SZA VALID DEVICE? JMP *+3 YES HLT 72B NO - TELL OPERATOR LDA LDDY USE PSEUDO LOADER WITH HALT LDB DLDVR GET LOCATION JSB MDVR,I AND MOVE IT ABS LDVR-7700B JSB CFM,I MOVE UTILITIES AND DRIVERS CLA CLB OTA SWREG CLEAR S-REG HLT 77B CONFIGURATION COMPLETE JMP CFLDR GO TO LOADER SKP * CONVERSATIONAL CONFIGURATION * CFCON CLA DO A CR/LF JSB COD,I LDA CTO GET COMPUTER TYPE ALF AND B17 ALS,ALS MPY BY 4 ADA CFCTP CONVERT TO MESSAGE POINTER STA *+2 JSB MSG,I OUTPUT COMPUTER TYPE TO CONSOLE NOP (NO INPUT WITH IT) LDA CTO GET OPTIONS AND B4 LDB CFDNA DMA NOT AVAILABLE SZA LDB CFDIV DMA IS AVAILABLE CLA,CLE OUTPUT MESSAGE TO CONSOLE JSB FMTO,I LDA CTO SKIP MEMORY PROTECT MESSAGE ALF AND B17 CPA B4 IF IT'S A 15 JMP CFMZM YES SKIP MESSAGE CPA B5 OR IF IT'S A 14 JMP CFMZM YES SKIP MESSAGE LDA CTO NOW MEMORY PROTECT AND B40 LDB CFMNA MPRT NOT AVAILABLE SZA LDB CFMIV MPRT IS AVAILABLE CLA,CLE JSB FMTO,I OUTPUT MESSAGE TO CONSOLE CFMZM LDA MEM GET MEMORY SIZE ALF AND B7 ADA CFMTB LDB A,I CLA,CLE JSB FMTO,I AND OUTPUT IT TO THE CONSOLE CLA,CLE LDB CFMS JSB FMTO,I CLA DO CR-LF JSB COD,I SKP * ASK FOR LINE PRINTER * CFDOD CLA STA LPDSC CLEAR SELECT CODE JSB MSG,I "LINE PRINTER TYPE + SC..." DEF DOTDM JSB CNST,I SEARCH FOR DEVICE DEF DOTDT JMP CFDOD NOT FOUND TRY AGAIN STA TMPA SAVE POINTER CPA LPDYD NONE? JMP CFDLP YES - SKIP SELECT CODE JSB CNSC,I CONVERT SELECT CODE JMP CFDOD ERROR TRY AGAIN STA SCX SAVE FOR MOVE STA LPDSC AND PUT IT IN BASE PAGE CFDLP LDA TMPA LDB LPDV JSB MDVR,I MOVE DRIVER INTO LOCATION DEC -21 CLA DO CR/LF JSB COD,I CFDIN JSB MSG,I "DIAG. INPUT DEVICE + SC.." DEF DINDM JSB CNST,I SEARCH FOR DEVICE DEF DINDP JMP CFDIN NOT FOUND TRY AGAIN STA TMPA JSB CNSC,I CONVERT SELECT CODE JMP CFDIN ERROR TRY AGAIN STA SCX SAVE FOR MOVE LDB TMPA BLF RBL,RBL IOR B ADD TYPE FOR BASE PAGE STA DRISC LDA TMPA ADA DINDD LDA A,I GET POINTER TO DRIVER LDB DLDVR JSB MDVR,I MOVE LOADER INTO POSITION ABS LDVR-7700B CLA DO CR-LF JSB COD,I SKP JSB MSG,I READY INPUT DEVICE DEF LDVRY,I (NO INPUT) CLA JSB COD,I DO CR/LF CFSN0 JSB MSG,I "DIAG. SERIAL NUMBER.." DEF DGSNM CCA,CLE LDB IBUFD JSB AS2N,I STA SVA SAVE SERIAL NUMBER LDA B,I CHECK NEXT CHARACTER FOR ZERO SEZ,RSS ALF,ALF AND B177 STA SVB SZA,RSS IS IT? JMP CFSN1 YES JUST USE SERIAL NUMBER CPA B54 IS IT A COMMA? RSS JMP CFSN0 NO SO TRY AGAIN CCA,SEZ,CME YES INB MOVE TO NUMBER JSB AS2N,I CONVERT BIT PATTERN STA SVB SAVE IT LDA B,I SEZ,RSS ALF,ALF AND B177 SZA IS IT END OF BUFFER? JMP CFSN0 NO SO TRY AGAIN CFSN1 CLA STA SCX CLEAR SELECT CODE FOR MOVE JSB CFM,I MOVE DRIVERS AND UTILITIES TO LAST PAGE LDA SVA GET SERIAL NUMBER LDB SVB JMP CFLDR * REP 104B OCT 106075 MEMORY HALT SKP * MOVE UTILITY AND DRIVERS TO UPPER MEMORY * CFMEM NOP LDB DEFT UPDATE ALL ADDRESS POINTERS PTUD LDA B,I CPA M1 END OF LIST JMP *+6 YES AND M70K MASK OLD ADDRESS IOR MEM ADD NEW ADDRESS STA B,I INB MOVE TO NEXT ADDRESS JMP PTUD CLA NO SC UPDATE STA SCX LDA B6.5K A = FROM ADDRESS LDB MEM B = TO ADDRESS SZB,RSS IS A MOVE NECESSARY JMP *+4 NO ADB A JSB MVDVR ABS 6500B-7700B JMP CFMEM,I NO RETURN * * MOVE DRIVER INTO LOCATION AND UPDATE SELECT CODE * MVDVR NOP STA FROM SAVE FROM LOCATION STB TO SAVE TO LOCATION LDA MVDVR,I GET NUMBER OF ISZ MVDVR WORDS TO BE MOVED STA MVCNT MVDV0 LDA FROM,I GET WORD LDB FROM,I CPB IOGM3 IS IT SWR REF? JMP MVDV1 YES - SKIP SC AND IOGM0 SZA,RSS IS IT A HALT JMP MVDV1 YES - SKIP SELECT CODE LDA FROM,I AND IOGM1 CPA IOGM2 IS IT AN IO INSTRUCTION ADB SCX YES - ADD SELECT CODE MVDV1 STB TO,I PUT IT IN PLACE ISZ FROM INCREMENT ADDRESSES ISZ TO FOR NEXT WORD ISZ MVCNT ALL WORDS MOVED? JMP MVDV0 NO JMP MVDVR,I * IOGM0 OCT 700 IOGM1 OCT 172076 IOGM2 OCT 102000 IOGM3 LIA 1,C TO NOP FROM NOP MVCNT NOP SKP * INITIALIZE SELECT CODE * ISC NOP LDA B,I CPA M1 END OF LIST? JMP ISC,I YES CPA M2 INCREMENT SELECT CODE RSS JMP *+3 NO ISZ SVA YES JMP *+4 BUT SKIP UPDATE OF M2 AND M77 MASK OFF OLD SELECT CODE ADA SVA ADD NEW ONE STA B,I PUT IT BACK IN PLACE INB MOVE TO NEXT ONE JMP ISC+1 * * CHECK AND SAVE SELECT CODE * CKSC NOP STA SCX SAVE SELECT CODE CLE,ERA CLE,ERA CLE,ERA SZA,RSS JMP *+3 LDA SCX RESTORE SELECT CODE JMP CKSC,I RETURN HLT10 HLT 10B SELECT CODE INPUT ERROR JMP *-1 (NOT RECOVERABLE) SKP * OUTPUT MESSAGE + CALL FOR INPUT * MSGR NOP CLA,CLE LDB MSGR,I OUTPUT MESSAGE ELB,CLE,ERB CLEAR BIT 15 SZB SKIP OUTPUT IF NO MESSAGE JSB FMTO,I LDB MSGR,I IS THIS A MESSAGE ONLY SSB ? JMP MSGX YES - EXIT LDA N10 CLEAR LDB IBUFD BUFFER STB TMPA CLB STB TMPA,I ISZ TMPA INA,SZA JMP *-3 LDA D20 CALL FOR INPUT LDB IBUFD JSB CID,I SZA,RSS IF NO INPUT TRY AGAIN JMP MSGR+1 LDA IBUFD SET POINTER RAL FOR GET BLOCK (GETB) STA IBUFP MSGX ISZ MSGR JMP MSGR,I RETURN * N10 DEC -10 D20 DEC 20 IBUF OCT 0,0,0,0,0,0,0,0,0,0 NOP SKP * * TABLE SEARCH ROUTINE * CNTS NOP JSB GETA GET FOUR CHARACTERS LDB CNTS,I ISZ CNTS CNTS0 LDA B,I START SEARCH CPA M1 END OF LIST? JMP CNTS,I YES-ERROR RETURN CPA SVA DO THE FIRST TWO CHR'S COMPAR? JMP *+5 YES INB NO MOVE TO CNTS1 INB NEXT BLOCK INB JMP CNTS0 INB LDA B,I CPA SVB DO THE NEXT TWO CHR'S COMPARE? JMP *+2 JMP CNTS1 NO INB YES LDA B,I GET NEXT WORD ISZ CNTS RETURN P+3 JMP CNTS,I * SKP * GET 4 ASCII CHARACTERS (FROM CONSOLE INPUT BUFFER) * IN A & B REG. THEN SKIP TO COMMA OR EOL * GETA NOP CLA CLEAR CHARACTERS FIRST STA SVA STA SVB JSB GETCH FIRST CHARACTER JMP GETAE ALF,ALF STA SVA JSB GETCH SECOND CHARACTER JMP GETAE IOR SVA STA SVA JSB GETCH THIRD CHARACTER JMP GETAE ALF,ALF STA SVB JSB GETCH FOURTH CHARACTER JMP GETAE IOR SVB STA SVB JSB GETCH WAIT FOR COMMA OR EOL RSS JMP *-2 GETAE LDA SVA GET THE FOUR CHARACTERS LDB SVB JMP GETA,I RETURN * GETCH NOP LDB IBUFP CLE,ERB LDA B,I SEZ,RSS ALF,ALF