* * * TVP10 SC * TVP10 NOP JSB OPEND CHECK FOR ABORT LDA TVP10,I WD2 STA SHTAS EXPECTED STATUS ISZ TVP10 ISZ TVP10 JSB WCHK CHECK STATUS CLA STA SHTAS RESET EXPECTED STATUS JMP TVP10,I * * * TVP13 HT * TVP13 NOP JSB OPEND CHECK FOR ABORT LDA TVP13,I HALT CODE HLT 2 ISZ TVP13 ISZ TVP13 JMP TVP13,I * * * TVP14 LP * TVP14 JSB OPEND CHECK FOR ABORT JMP BPTO,I * * TVP15 RT * TVP15 NOP JSB OPEND CHECK FOR ABORT LDA TVP15,I NUMBER OF TIMES TO REPEAT ISZ TVP15 CPA TVP15,I DONE? JMP TV15A YES ISZ TVP15,I ISZ TVP15 JMP TVP15,I JUMP TO LABEL TV15A CLA STA TVP15,I RESET COUNT ISZ TVP15 ISZ TVP15 ISZ TVP15 JMP TVP15,I * * * * TRANSFER VECTORS * * * POINTERS USED BY TRANSFER VECTORS * * CODEC ABS -*-2 CODEE DEF *+1 ASC 1,AR 0 ASC 1,CB 1 ASC 1,CD 2 ASC 1,CE 3 ASC 1,DB 4 ASC 1,DS 5 ASC 1,EE 6 ASC 1,EN 7 ASC 1,EP 10 ASC 1,GO 11 ASC 1,HT 12 ASC 1,ID 13 ASC 1,IS 14 ASC 1,LB 15 ASC 1,RD 16 ASC 1,RR 17 ASC 1,RS 20 ASC 1,SC 21 ASC 1,SD 22 ASC 1,SR 23 ASC 1,WD 24 ASC 1,LP 25 ASC 1,RL 26 ASC 1,ST 27 ASC 1,RT 30 ASC 1,FL 31 ASC 1,FU 32 ASC 1,VL 33 ASC 1,VU 34 CODEF DEF * * * TABLE OF OP CODES * * * * CODE GENERATOR TRANSFER TABLE * OUTC DEF *+1 DEF POUT1 AR DEF POUT5 CB DEF POUT4 CD DEF POUT2 CE DEF POUT6 DB DEF POUT1 DS DEF POT11 EE DEF POUT7 EN DEF POT12 EP DEF POUT3 GO DEF POT10 HT DEF POUT9 ID DEF POUT1 IS DEF POUT3 LB DEF POUT4 RD DEF POUT2 RR DEF POUT2 RS DEF POT10 SC DEF POUT8 SD DEF POUT1 SR DEF POUT4 WD DEF POT14 LP DEF POUT2 RL DEF POUT2 ST DEF POT15 RT DEF POUT2 FL DEF POUT2 FU DEF POUT2 VL DEF POUT2 VU HED PACK2 * * * PACK2 * INPUT TWO CHARACTERS PACKED INTO ONE WORD * SKIPS ON ERROR-FREE EXIT * PACK2 NOP JSB CHAR FIRST CHARACTER JMP PACK2,I ERROR ALF,ALF POSITION TO LEFT CHARACTER STA LOCAL SAVE JSB CHAR SECOND CHARACTER JMP PACK2,I ERROR IOR LOCAL PACK TOGETHER ISZ PACK2 JMP PACK2,I HED BUILD,OPEND * * BUILD * TRANSFERS CODE FROM WD1,WD2,WD3 AND WD4 TO * THE WORK AREA. * ON ENTRY A= NUMBER OF WORDS TO TRANSFER * BUILD NOP LDB A SAVE COUNT ADB WD0 FORM POINTER TO NEXT WORD STB LOCAL ALF,ALF FORM WORD N ADA OPCNT STA B,I STORE INTO TRANSFER AREA JSB PUT3N CHECK FOR OVERFLOW LDA WD0 BUL1 INA LDB A,I TRANSFER STB BILD,I TO WORK AREA ISZ BILD CPA LOCAL DONE? JMP BUILD,I YES JMP BUL1 NO * * * OPEND * CHECKS FOR ABORT (BIT3=0) * OPEND NOP JSB SWR AND BIT3 SZA SKIP IF BIT 3 = 0 JMP OPEND,I NO,OK LDA MM650 DELAY FOR 650 STA LCNT MILLISECONDS OPED1 EQU * CLA,INA DELAY FOR 1 JSB TMR,I MILLISECOND ISZ LCNT DONE? JMP OPED1 NO JSB SWR AND BIT3 SZA SKIP IF BIT 3 = 0 JMP OPDNI,I RESTART OPDSN JMP DONE HED MESSAGES * SUP M0 OCT 06412 ASC 19,H0 7900/7901 CARTRIDGE DISC MEMORY DIA ASC 04,GNOSTIC# M1 ASC 04,H1 UNIT J001A BSS 1 ASC 13, REMOVED FROM UNIT TABLE# M2 ASC 15,E2 CLF OR SFS FAILED-CHANNEL J002A BSS 1 ASC 01,# M3 ASC 19,E3 SFC FAILED WITH FLAG CLEAR-CHANNEL J003A BSS 1 ASC 01,# M4 ASC 15,E4 STF OR SFC FAILED-CHANNEL J004A BSS 1 ASC 01,# M5 ASC 18,E5 SFS FAILED WITH FLAG SET-CHANNEL J005A BSS 1 ASC 01,# M6 ASC 18,E6 NO INTERRUPT ON COMMAND CHANNEL# M7 ASC 19,E7 WRONG RETURN ADDRESS USING COMMAND ASC 04,CHANNEL# M10 ASC 10,E10 NO COMMAND FLAG# M11 ASC 10,E11 LATE DATA FLAG# M12 ASC 17,E12 NO DATA FLAG(GETTING STATUS)# M13 ASC 02,E13 JP13A BSS 2 ASC 10, WORDS TRANSFERRED JP13B BSS 2 ASC 05, EXPECTED# M14 ASC 16,E14 NO COMMAND FLAG(USING DMA)# M15 ASC 10,H15 ADDRESS RECORD# M16 ASC 07,H16 OVERFLOW# M17 ASC 10,H17 DUPLICATE LABEL# M20 ASC 13,H20 UNDEFINED INSTRUCTION# M21 ASC 20,E21 MISSING OR DUPLICATE ATTENTION BIT# M22 ASC 09,H22 CYCLIC CHECK# M23 ASC 02,H23 JP23A BSS 3 ASC 11, ERRORS/PASS ALLOWED# M24 ASC 09,H24 CYLINDER TABLE OCT 06412 JP24A BSS 20 ASC 01,# M25 ASC 10,H25 WISH TO CHANGE?# M26 ASC 19,H26 ENTER CYLINDERS SEPARATED BY COMMA ASC 01,S# M27 ASC 09,H27 PATTERN TABLE OCT 06412 JP27A BSS 41 ASC 01,# M30 ASC 20,H30 ENTER PATTERNS SEPARATED BY COMMAS# M31 ASC 08,H31 INPUT ERROR# M32 ASC 11,H32 ENTER ERRORS/PASS# M33 ASC 13,H33 ATTENTION/SEEK-STATUS OCT 6412 JP33A BSS 32 M34 ASC 20,H34 ENTER UNIT NUMBERS(0-3)SEPARATED BY ASC 04,COMMAS# M35 ASC 10,H35 INITIAL STATUS# M36 ASC 11,H36 INITIALIZE DATA # M37 ASC 08,H37 UNIT TABLE/ JP37A BSS 1 ASC 05, DRIVE(S); JP37B BSS 5 M40 ASC 06,H40 PROTECT JP40A BSS 1 ASC 09,D THEN READY UNIT JP40B BSS 1 ASC 01,# M41 ASC 05,H41 CLEAR JP41A BSS 1 ASC 12,D PROTECT,LOAD,PUSH RUN# M42 ASC 04,H42 UNIT JP42A BSS 1 ASC 08, ATTENTION SET# M43 ASC 08,E43 DMA MISSING# M44 ASC 05,H44 SEEK# M45 ASC 06,H45 WRITE # M46 ASC 05,H46 READ# M47 ASC 07,E47 DATA WORD JP47A BSS 2 ASC 02, IS JP47B BSS 3 ASC 06, SHOULD BE JP47C BSS 3 ASC 01,# M50 ASC 04,E50 UNIT JP50A BSS 1 ASC 08, MISSING-PRESENT JP50B BSS 3 ASC 04, NONE# M51 ASC 04,H51 CYL JP51A BSS 2 ASC 03, HEAD JP51B BSS 1 ASC 04, SECTOR JP51C BSS 1 ASC 06, WORD COUNT JP51D BSS 2 ASC 03, UNIT JP51E BSS 1 ASC 01,# M52 ASC 10,E52 BUFFER CHECKSUM JP52A BSS 3 ASC 03, CYL JP52B BSS 3 ASC 01, ( JP52D BSS 2 ASC 03,)HD/S JP52C BSS 3 ASC 02, (H= JP52E BSS 1 ASC 02, S= JP52F BSS 1 ASC 01,)# M53 ASC 15,H53 AVERAGE MINIMUM SEEK TIME JP53A BSS 1 JP53B BSS 1 ASC 01,# M54 ASC 15,H54 AVERAGE RANDOM SEEK TIME JP54A BSS 3 ASC 04,,LENGTH JP54B BSS 2 ASC 01,# M55 ASC 12,H55 ENTER INSTRUCTIONS# M56 ASC 10,H56 UNDEFINED LABEL JP56A BSS 1 ASC 01,# M57 ASC 15,E57 SCREEN TEST ERROR-CHANNEL JP57A BSS 1 ASC 1,# M60 ASC 06,H60 REFINE# M62 ASC 18,H62 TYPE A FOR HEADS 0,1;B FOR 2,3;C ASC 15, FOR ALTERNATELY 0,1 THEN 2,3# M63 ASC 09,E63 NO DATA FLAG# M64 ASC 07,E64 STATUS IS JP64A BSS 3 ASC 06, SHOULD BE JP64B BSS 3 ASC 01,# M65 ASC 08,H65 XXXXX PASS JP65A BSS 2 ASC 08,,HEADS X/X,UNIT JP65E BSS 1 ASC 01,, JP65B BSS 2 ASC 10, ERRORS,MULTI-DRIVE# JP65C ASC 03, NGLO (LONG ) JP65D ASC 03,T ORSH (SHORT ) M66 ASC 17,H66 SET OVERRIDE SWITCH,PUSH RUN# M67 ASC 18,H67 CLEAR OVERRIDE SWITCH,PUSH RUN# M70 ASC 08,H70 UNLOAD UNIT JP70A BSS 1 ASC 05,,PUSH RUN# M71 ASC 18,H71 PRESS PRESET(S) THEN PRESS RUN# M72 ASC 04,E72 UNIT JP72A BSS 1 ASC 06, NOT READY# HED ADDO * * ROUTINE TO PRINT OUT THE CURRENT DISK ADDRESS * * ADDO NOP JSB B11CK IS TTY AVAILABLE? JMP AOUT NO LDA CYL YES,CONVERT CYLINDER NUMBER LDB P051A TO ASCII JSB DCIN2 AND STORE IN MESSAGE LDA HEAD CONVERT HEAD NUMBER IOR HDON LDB P051B TO ASCII JSB DCIN1 AND STORE IN MESSAGE LDA SECTR CONVERT SECTOR NUMBER LDB P051C TO ASCII JSB DCIN1 AND STORE IN MESSAGE LDA WCNT CONVERT WORD COUNT LDB P051D TO ASCII JSB DCIN2 AND STORE IN MESSAGE LDA UNIT CONVERT UNIT NUMBER TO ASCII ADA ASCZZ =030060B AND STORE IN MESSAGE STA JP51E H51 LDA B51 CYL,HEAD,SECTOR JSB FPRNT WORD COUNT XXXX UNIT X AOUT JSB ERHTI,I ALLOW HALT JMP ADDO,I HED PCOPR * PCOPR * PRINT CURRENT OPERATION * PCOPR EQU * JSB PRNT1 GET MESSAGE LENGTH AND ADDRESS JMP PCOPB TELEPRINTER IS SUPPRESSED ARS CONVERT LENGTH CMA,INA FROM CHARACTERS STA LOCAL TO WORDS LDA PCOPC FINAL MESSAGE STA PSAVE ADDRESS JSB PMOVE MOVE FIRST HALF OF MESSAGE LDA STEPN DEPOSIT LDB PCOPE STEP NUMBER IN JSB DCIN1 SECOND HALF OF MESSAGE LDA MM7 LENGTH OF SECOND STA LOCAL HALF IS 7 WORDS LDB PCOPF ADDRESS OF SECOND HALF JSB PMOVE MOVE SECOND HALF OF MESSAGE LDA B61 JSB FPRNT OUTPUT MESSAGE PCOPB EQU * LDA COPRN JMP PCOP,I * PMOVE NOP B = ADDRESS OF DATA TO MOVE PMV EQU * PSAVE = WHERE TO MOVE IT LDA B,I LOCAL = NUMBER OF WORDS TO MOVE STA PSAVE,I ISZ B ISZ PSAVE ISZ LOCAL DONE? JMP PMV NO JMP PMOVE,I YES PCOPC DEF *+1 M61 BSS 17 PCOPF DEF *+1 ASC 05, IN STEP PCOPD BSS 1 ASC 01,# PCOPE DEF PCOPD HED WADRA * * WADRA * THIS PART IS SEPARATE FROM WADR SO OPDSN CAN USE IT. * WADRA NOP JSB DMW START DMA WRITE LDB B36 SET UP CURRENT OPERATION LDA WRITA INITIALIZE DATA COMMAND IOR WRSP PCI AND DCI BITS JSB COMMD ISSUE COMMAND JSB DMAT JSB STAT GET STATUS JMP WADRA,I EXIT HED ERHLT ORG 12000B * * ERHLT * TESTS HALT BIT (BIT14) AFTER ERROR * ERHLT NOP JSB SWR TTY AVAILABLE AND A4400 AND SPACES WANTED? SZA JMP ERH1 NO LDA CRLFL YES LDB 113B IS FAST DEVICE SZB CONFIGURED? JMP ERH2 YES LDB CRLFI JSB SIOLO,I PRINT BLANK LINE JMP ERH1 ERH2 EQU * LDB CRLFI JSB SIOFO,I PRINT BLANK LINE ERH1 EQU * * RECORD ERROR AND POSSIBLY REMOVE UNIT * ISZ ERR INCREMENT ERROR COUNT NOP AVOID SKIP LDA ERR CPA MAX = 20 IN DEFAULT CASE RSS REMOVE UNIT JMP ATCLR LDA UNIT ADA ASCZZ STA P001A,I LDA B1 H1 JSB FPRNT UNIT X REMOVED FROM UNIT TABLE LDA UNITC DECREMENT STA LOCAL NUMBER OF ADA MM1 UNITS STA UNITC IN TABLE SZA ANY LEFT? JMP RCRDA YES RCRDB CLA,INA STA UNITC HLT 5 JMP DONE RCRDA LDA UNITA MOVE UNIT TABLE STA WD1 INTO LDA UNITA+1 TEMPORARY STA WD2 STORAGE LDA UNITA+2 STA WD3 LDA UNITA+3 STA WD4 LDA LOCAL NUMBER OF CMA,INA UNITS IN STA LOCAL TABLE LDB UNITS TO ADDRESS LDA WD0 INA STA GLOB1 FROM ADDRESS CLA STA UNITC REMOVE ALL OCCURANCES OF UNIT RCRDC EQU * LDA GLOB1,I CPA UNIT REMOVE ? JMP RCRDD YES STA B,I NO INB ISZ UNITC RCRDD EQU * ISZ GLOB1 ISZ LOCAL DONE? JMP RCRDC NO LDA UNITC ANY LEFT SZA,RSS JMP RCRDB NO JMP DONE YES * * ATCLR * CLEARS UNEXPECTED ATTENTION BITS DURING RUN * ATCLR LDA SECTN DON'T CLEAR CPA D5 ATTENTION IN SECTION 5 JMP RCRD LDA MM4 MAXIMUM NUMBER OF UNITS STA CCNT CC20 LIA CC JSB GETNI,I ANY ATTENTION BITS SET? RSS YES JMP RCRD LDA UNIT SAVE STA LABEL UNIT NUMBER CPB UNIT THIS UNIT? JMP CLST YES-CLEAR BUT DON'T REPORT STB UNIT ADB B2060 STB P042A,I LDA B42 H42 JSB FPRNT H42 UNIT X ATTENTION SET CLST JSB STAT CLEAR ATTENTION LDA LABEL RESTORE STA UNIT UNIT NUMBER ISZ CCNT DONE? JMP CC20 NO RCRD EQU * JSB SWR AND BIT14 SZA HALT? JMP ERHLT,I NO LDA ELOC YES HLT 1 JMP ERHLT,I HED DMR,DWW CONTINUATION AND OVERN DMRR LDA BUFAE LOAD MEMORY ADDRESS IOR BIT15 OR IN DIRECTION BIT JSB DMALL DC05 STC DC,C LDA NEWBD SEE IF NEW BOARD SZA SKIP IF NOT NEW BOARD JSB OVERN DM6B STC DMAD,C START DMA CHANNEL JMP DMR,I RETURN DMWW LDA BUFAD GET MEMORY ADDRESS JSB DMALL LDA NEWBD SEE IF NEW BOARD SZA SKIP IF NOT DC06 STC DC START DMA DC07 STF DC SZA SKIP IF NOT NEW BOARD JSB OVERN DM6D STC DMAD,C JMP DMW,I OVERN NOP LDA C0001 OVERRUN STATUS STA SHTAS PLACE IN EXPECTED STATUS CLA STA NEWBD CLEAR NEW BOARD INDICATOR ISZ OVERN INCREMENT RETURN ADDRESS JMP OVERN,I HED STP32 AND STP35 PATCHES STP32 NOP LDA STAUS GET STATUS CPA B41 IS THIS THE STATUS RSS JMP ST32A ISZ NEWBD INDICATE TESTING NEW BOARD JSB SEEH ISSUE SEEK JSB WAIH WAIT FOR HEAD SWITCHING JSB WRITE ST32A JSB WCHK CHECK FOR ERROR JSB SNDI,I JMP STP32,I SNDI DEF SEND STP35 NOP LDA STAUS GET STATUS CPA B41 SEE IF THIS IS THE STATUS JMP ST35A CLA STA PATT SET PATTERN JSB PCHKI,I CHECK READ BUFFER JMP ST35B ST35A CLA STA SHTAS CLEAR EXPECTED STATUS JSB SEEH ISSUE SEEK ISZ NEWBD INDICATE NEW BOARD JSB WAIH WAIT FOR HEAD SWITCHING JSB READ JSB WCHK CHECK FOR OVERRUN ST35B JSB SNDI,I JMP STP35,I HED BUFFER DEFINITIONS * * WRITE BUFFER FROM BUFB TO BUFB+2000B. * READ BUFFER FROM BUFB+2000B TO BUFB+4000B. * OPDSN BUFFER FROM 16000B TO CONFIGURATOR(OR 20000B AT MOST). * (BPTOS = UNUSED SPACE). * BUFB DEF * WRITE BUFFER ABS 12500B-BUFB OPDSN WORK AREA HED INIT INIT JSB SWR STA CNFSW SAVE CONFIGURATION SWITCH REG AND B77 STA LOCAL SAVE DATA CHANNEL SELECT CODE ADA MM8 SSA HLT 73B INVALID SELECT CODE LDB FRSTB STB GLOB2 SAVE FIRST POINTER CCA STA FLAG FLAG = -1 LDB LASTB LA STB GLOB1 SAVE LAST POINTER LB LDB GLOB2,I LOAD POINTER LDA B,I LOAD WORD AND P7700 MASK OUT SELECT CODE IOR LOCAL STUFF IN NEW SELECT CODE STA B,I STORE BACK CPB GLOB1,I DONE? JMP LC YES ISZ GLOB2 NO JMP LB LC EQU * ISZ FLAG SKIP IF NOT DONE JMP IOUT DONE ISZ LOCAL INCREMENT SELECT CODE LDB FRSTC STB GLOB2 SAVE FIRST POINTER LDB LASTC LOAD LAST POINTER JMP LA IOUT EQU * * * SET UP DMA * LDA CNFSW LOAD CONFIGURATION SWITCH REG AND BIT14 SZA SKIP FOR DMA 6 CLA,INA THIS IS DMA 7 STA LOCAL LDB FRSTD STB GLOB2 SET UP POINTER LD LDB GLOB2,I LOAD ADDRESS FROM TABLE LDA B,I LOAD VALUE FROM CORE AND MM2 MASK OFF BIT 0 IOR LOCAL ADD DMA CHANNEL BIT STA B,I RESTORE CORE CPB LASTD,I DONE? JMP LE YES ISZ GLOB2 NO,CONTINUE JMP LD LE EQU * * HLT 74B JMP *+1,I DEF START CNFSW BSS 1 FLAG BSS 1 FRSTB DEF *+1 DEF DMACW DEF DC01 DEF DC02 DEF DC03 DEF DC04 DEF DC05 DEF DC06 DEF DC07 DEF DC11 DEF DC12 DEF DC13 DEF DC22 DEF DC23 DEF DC14 DEF DC15 LASTB DEF *-1 FRSTC DEF *+1 DEF CC01 DEF CC02 DEF CC03 DEF CC04 DEF CC05 DEF CC06 DEF CC7 DEF CC09 DEF CC10 DEF CC11 DEF CC12 DEF CC13 DEF CC14 DEF CC15 DEF CC16 DEF CC17 DEF CC18 DEF CC19 DEF CC20 LASTC DEF *-1 FRSTD DEF *+1 DEF DM2A DEF DM2B DEF DM2C DEF DM2D DEF DM2I DEF DM2J DEF DM2K DEF DM2L DEF DM6A DEF DM6B DEF DM6D DEF DM6E DEF DM6F DEF DM6G DEF DM6H DEF DM6I LASTD DEF *-1 PEND EQU * END