ASMB,Q,R,C HED RTGN7 - 13037 & ICD DISC SUBROUTINE SEGMENT. NAM RT4G7,5,90 92067-16322 REV.2026 800423 * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** SPC 3 ****************************************************************** * * NAME: RT4G7 * SOURCE: 92067-18322 * REL: 92067-16322 * WRITTEN BY: JJC,KFH, GAA * ****************************************************************** SPC 3 * * 7905 SUBROUTINE ENTRY POINTS: * ENT \DST5 ENTRY FOR DSETU ENT \BOT5 ENTRY FOR PTBOT ENT \TB32 ENTRY FOR DSTBL. ENT \FSC5 ENTRY FOR FSECT. * * * * * EXTERNAL UTILITY SUBROUTINES: * EXT WRITF EXT \CRET,\FMRR,\CFIL,\DSKD EXT \MESS,\SRET,\RNME,\CONV EXT \DCON,\SPAC,\READ,\GETN,\GINT,\GET#,\GETC EXT \INER,\YENO,\LSTE,\LSTS,\ABOR,\ABDO EXT \PIOC,\TBCH,\BDCB EXT \MTCH * * EXT \LST5,\OBUF EXT \TBUF,\PREL EXT \MDTB,\SCTK EXT \ADSK,\IBI * A EQU 0 B EQU 1 SUP SKP *************************************************************************** * * 770913 * * THE FOLLOWING BLOCK OF STORAGE FOR VARIABLES PRECEEDS, * AND IS REFERENCED BY, EACH SEGMENT. IT IS NOT OVERLAID * AS EACH NEW SEGMENT IS LOADED INTO MEMORY. * * THE LOCATION OF EACH VARIABLE MUST BE THE SAME IN ALL * SEGMENTS. IF A CHANGE IS MADE, MAKE THE SAME CHANGES * IN THE REST OF THE SEGMENTS. * *************************************************************************** * * BEG55 EQU * TB30 BSS 160 TRACK MAP TABLE/HEADER RECORD BUFFER * ILIST BSS 64 USER SYSTEM PROG IDENT ADDR LIST CURIL BSS 1 CURRENT ILIST ADDRESS * SYSCH BSS 1 SUBCHANNEL OF SYSTEM UNIT. DCHNL BSS 1 CHANNEL OF SYSTEM DISK UNIT AUXCH BSS 1 SUBCHANNEL OF AUX UNIT. DSIZE BSS 1 DISK SIZE -NO. OF TRACKS. #SUBC BSS 1 # DISC SUBCHANNELS DEF'D (7905/7920) DAUXN BSS 1 AUXILIARY DISK SIZE. ADS# BSS 1 AUX DISC SECTORS/TRACK. * * RELOCATION BASE TABLE. RBTA BSS 1 ABSOLUTE PROGRAM BASE. TPREL BSS 1 CURRENT PROGRAM BASE ADDRESS. TPBRE BSS 1 BASE PAGE RELOCATION ADDRESS. COMAD BSS 1 CURRENT COMMON RELOCATION BASE. BSS 1 ABS PROGRAM BASE FOR MR CODE. * WDCNT BSS 1 TEMPORARY WORD COUNTER. DSKSY BSS 1 INITIAL ID SEGMENT DISK ADDRESS IDSP BSS 1 POSITION OF 1ST ID SEG. IN SECT TTYCH BSS 1 SYSTEM TTY CHANNEL NO. * PLFLG BSS 1 PROGRAM LOAD. FLAG = -1/0 = L/NL DSCNT BSS 1 DISK SEGMENT SECTOR COUNT * NXFLG BSS 1 ENT/EXT FLAG = -1/0 EXCNT BSS 1 SYMBOL COUNTER * LCNT BSS 1 CURRENT \LBUF COUNT DCNT BSS 1 CURRENT DBUF COUNT CURAI BSS 1 CURRENT IBUF COUNT * CPLS BSS 1 ADDRESS OF TOP OF FIXED CP LINK IMAGE CPL1 BSS 1 ADDRESS OF LOW CURRENT PAGE LINK SPECS. CPL1H BSS 1 NUMBER OF CURRENT PAGE LINKS ASSIGNED CPL2H BSS 1 IN LOW AND HIGH AREA RESPECTIVELY URBP1 BSS 1 LWA R/T DISC RES BP LINK AREA CURAK BSS 1 CURRENT KBUF ADDRESS * CURAT BSS 1 CURRENT \TBUF ADDRESS TCNT BSS 1 CURRENT \TBUF COUNT * CURAP BSS 1 CURRENT PLIST ADDRESS * AMAD BSS 1 CURRENT MLIST ADDRESS * IXCNT BSS 1 ID EXTENSION COUNT IDEXC BSS 1 CURRENT ID EXT'S USED IDEX BSS 1 ADDRESS OF ID EXTENSION TABLE * LICNT BSS 1 LONG ID SEGMENT COUNT SSCNT BSS 1 SHORT ID SEG COUNT - FOR SEGMENTED PROGS * DSKID BSS 1 DISK ID SEGMENT ADDRESS KEYCN BSS 1 TOTAL KEYWORD COUNT KEYCT BSS 1 CURRENT KEYWORD COUNT * MLIST BSS 11 MEMORY MAP BUFFER * TEMP1 BSS 1 TEMP2 BSS 1 LWH1 BSS 1 LWH2 BSS 1 LWH3 BSS 1 LWH4 BSS 1 L01 BSS 1 * FSYBP BSS 1 FIRST WORD SYS BP LINKAGE SYSAD BSS 1 CURRENT ID SEGMENT ADDRESS * TBREL BSS 1 CURRENT BP RELOC ADDR PBREL BSS 1 INITIAL BP RELOC ADDR * RELAD BSS 1 CURRENT CORE RELOCATION ADDRESS * BSBAD BSS 1 BG SEGMENT BP RELOC ADDR BSPAD BSS 1 BG SEGMENT PROG RELOC ADDR * LFLAG BSS 1 PROGRAMS-LOADED FLAG IMAIN BSS 1 CURRENT MAIN IDENT INDEX. HDFLG BSS 1 HEADING FORMAT FLAG CIDNT BSS 1 CURRENT MAIN IDENT INDEX. * AEQT BSS 1 ADDRESS OF EQUIPMENT TABLE CEQT BSS 1 NO. ENTRIES IN EQUIPMENT TABLE SPLCO BSS 1 SPOOL EQT COUNT DVMAP BSS 1 ADDRESS OF DRIVER MAP TABLE * DPFLG BSS 1 DP RELOCATION FLAG, 0=YES, -1=NO DPLN BSS 1 PAGE LENGTH OF DRIVER PARTITION DPADD BSS 1 START ADDR OF DRIVER PARTITION DSKDP BSS 1 DISK ADDRESS OF DP #2 PAGE# BSS 1 NEXT PHYSICAL PAGE TO ALLOCATE DPNUM BSS 1 CURRENT DP# -1, OR TOT DP PAGES SDID BSS 1 IDENT IDEX OF SYS DISK DRIVER LWDP1 BSS 1 LAST WORD OF DP, +1 FWSDA BSS 1 FIRST WORD OF SDA * ASQT BSS 1 ADDR OF DEVICE REFERENCE TABLE CSQT BSS 1 NO. ENTRIES IN DEV. REF. TABLE * AINT BSS 1 ADDRESS OF INTERRUPT TABLE * DSKIN BSS 1 DISK ADDR OF INT CODE RECORD INTCN BSS 1 RECORD COUNT OF INT CODE * IDSAV BSS 1 INDEX OF CURRENT IDENT. DSKMN BSS 1 INITIAL MAIN DISK ADDRESS BSSDP BSS 1 INITIAL DISK RES MAIN BSS DISP PRENT BSS 1 PRIMARY ENTRY POINT DBLAD BSS 1 CURRENT DBL ADDRESS REKEY BSS 1 INSTRUCTION TYPE BYTE INSCN BSS 1 INSTRUCTION TYPE COUNTER INSTR BSS 1 CURRENT INSTRUCTION PAGNO BSS 1 CURRENT PAGE NO. OPRND BSS 1 CURRENT OPERAND PLGTH BSS 1 PROGRAM LENGTH * DRT2 BSS 1 DISK DRT ENTRY ( SYSTEM) DRT3 BSS 1 AUX DISK DRT ENTRY * LIBFG BSS 1 LDTYP BSS 1 * SCH1 BSS 1 INDEX OF IDENT OF PGM TO BE SCHEDULED SCH3 BSS 1 ADDRESS OF CURRENT ID SEGMENT SCH4 BSS 1 ADDRESS OF THE SCHEDULED PGM ID SEG FGBGC BSS 1 BACKGROUND USING FG COMMON FLAG $LIBR BSS 1 INDEX OF $LIBR ENT $LIBX BSS 1 INDEX OF $LIBX ENT CUPRI BSS 1 * BLLO BSS 1 -(LOWER BUFFER LIMIT) BLHI BSS 1 -(UPPER BUFFER LIMIT) * MEM6 BSS 1 MEM12 BSS 1 * COMRT BSS 1 MAXIMUM RT COM LENGTH COMBG BSS 1 MAXIMUM BG COM LENGTH COMSZ BSS 1 #WORDS COMMON DECLARED IN CURRENT MAIN RTCAD BSS 1 RT COMMON ADDRESS BGCAD BSS 1 BG COMMON ADDRESS FPCOM BSS 1 FIRST PAGE OCCUPIED BY COMMON LPCOM BSS 1 LAST PAGE CONTAINING ANY COMMON * FPSAM BSS 1 1ST PAGE CONTAINING S.A.M. FWSAM BSS 1 1ST WORD CONTAINING S.A.M. SYMAD BSS 1 VALUE FOR AVMEM IN SCOM SAM#1 BSS 1 SIZE OF FIRST CHUNK OF SAM SAM#2 BSS 1 SIZE OF SECOND CHUNK OF SAM SAM2P BSS 1 START PAGE OF SAM #2 LWTAI BSS 1 LAST WORD OF TABLE AREA I FOR SAM#0 FWPRV BSS 1 FIRST WORD FOR PRIVILEGED PROGRAMS * FWSYS BSS 1 FIRST WORD OF SYSTEM CODE LPSYS BSS 1 LAST PAGE CONTAINING SYS LWSYS BSS 1 LAST WORD OF SYSTEM LPSLB BSS 1 LAST PAGE OF SLOW BOOT LWSLB BSS 1 LAST WORD OF SLOW BOOT MTYPE BSS 1 MAIN PROGRAMS'S TYPE * HIBP BSS 1 BP LINK MODE FOR FIXUP ENTRIES LOLNK BSS 1 LOW LINK FOR SSGA,LIB, OR SYS HILNK BSS 1 HI LINK USED BY MEM RES PRG BPINC BSS 1 BP LINK ALLOCATION MODE, -1=DOWN,1=UP BPLMT BSS 1 LAST AVAIL BP LINK IN CURRENT MODE, +1 * TPMAX BSS 1 HWM FOR RELOCATION OF BG MAINS & SEGS MAXPT BSS 1 NUM PARTS. ALLOWED MAT. BSS 1 ADDRESS OF MEMORY ALLOCATION TABLE * SSGA. BSS 1 FWA SSGA MAP. BSS 1 PTR TO MEU RES MAP MPFT. BSS 1 PTR TO MPFT * EMLNK BSS 1 EMA SYMBOL'S LINK EMLST BSS 1 LST INDEX OF EMA SYMBOL EMDSK BSS 1 DISK ADDR OF EMA PROGRAM * * MEMORY RESIDENT AREA POINTERS * MRACM BSS 1 MR ACCESS COMMON FLAG (>0 IF YES) LBCAD BSS 1 FIRST WORD OF MEMORY RES LIBRARY LEND BSS 1 LAST WORD OF MEMORY RES LIBRARY FWMRP BSS 1 FIRST WORD OF MEMORY RES PROGRAM AREA EMRP BSS 1 LAST WORD OF MEMORY RES PROGRAM AREA FPMRP BSS 1 FIRST PAGE OF MEMORY RES PROGRAM AREA FPMBP BSS 1 PAGE # FOR MEMORY RES BASE PAGE MRP# BSS 1 # PAGES OCCUPIED BY MRL & MRP'S DSKMB BSS 1 DISK ADDRESS OF MEMORY RES BASE PAGE DSKMR BSS 1 DISK ADDRESS OF MEMORY RESIDENT LIB/PROG AREA DSKBP BSS 1 SYSTEM DISK ADDRESS * DSKAV BSS 1 NEXT AVAILABLE DISK ADDRESS DSKLC BSS 1 DISK ADDRESS OF LIBRARY CODE DSKLB BSS 1 DISK ADDR OF LIBRARY ENTRY PTS DSKUT BSS 1 UTILITY PROG DISK ADDRESS DSKBS BSS 1 DISK ADDR OF MAIN BG DISK RES BP DSKBR BSS 1 CURRENT MAIN BG DISK RES DISK AD ADICT BSS 1 ADDR OF DISK DICTIONARY LBCNT BSS 1 RESIDENT LIBR ENTRY PT COUNT SYCNT BSS 1 SYSTEM ENTRY POINT COUNT KEYAD BSS 1 CURRENT KEYWORD ADDRESS * SYBAD BSS 1 ADDR OF FIRST BP LINK FOR BG IDSAD BSS 1 ADDR OF FIRST ID SEGMENT ABSID BSS 1 IDENT ADDR FOR NEXT BG SEG SCAN IDMBS BSS 1 BG MAIN ADDRESS FOR BS REF * SYTRK BSS 1 DISC ADDR WHERE SYSTEM BEGINS - TRACK SYSEC BSS 1 DISC ADDR WHERE SYSTEM BEGINS - SECTOR * SSGAF BSS 1 SSGA ACCESS FLAG SPAR2 BSS 1 SPARE VARIABLE SPAR3 BSS 1 SPARE VARIABLE SPAR4 BSS 1 SPARE VARIABLE SPAR5 BSS 1 SPARE VARIABLE * ********************************************************* * * * END OF COMMON STORAGE BLOCK FOR ALL SEGMENTS. * * * ********************************************************* * SKP * BEG05 JMP \SRET SEGMENT ENTRY POINT * DC EQU 0 ABOOT DEF START ADDR OF 128 WD BOOT EXTENSION (13037 DISCS) HBOOT DEF HSTRT ADDR OF 256 WD HPIB DISC BOOT EXTENSION HBOT2 DEF HSTRT+128 ADDR OF 2ND HALF OF HPIB BOOT ATB30 DEF TB30 ADDR OF TRACK MAP TABLE IMAGE * INTMP BSS 1 TEMP FOR INITILIZATION ROUTINES MS3 DEF *+1 SUBCHANNEL NUMBER MESAGE ASC 3, 00? * MES1 DEF *+1 ASC 19,MODEL,#TRKS,FIRST CYL,HEAD,#SURFACES, ASC 18,UNIT,#SPARES FOR SUBCHNL: MS1A DEF MES1+20 MSIBI DEF *+1 ASC 18,ADDRESS,#SPARES(,UNIT) FOR SUBCHNL: * MES4 DEF MES04 MES04 ASC 8,BOOT FILE NAMR? MES05 ASC 8,SYSTEM SUBCHNL? MES07 ASC 9,AUX DISC SUBCHNL? MES40 DEF *+1 ASC 7,DISC MODEL # ? MESS2 DEF *+1 ASC 12,CONTROLLER SELECT CODE? MES6 DEF *+1 ASC 16,AUX DISC (YES OR NO OR # TRKS)? "/E" ASC 1,/E SBUF BSS 3 DSBUF DEF SBUF MES5 DEF MES05 MES7 DEF MES07 * L2000 OCT -2000 M0760 OCT 76000 M77 OCT 77 M377 OCT 377 M1177 OCT 101777 M1760 OCT 1760 M1777 OCT 1777 M74C OCT 7400 M7400 OCT 177400 M7700 OCT 177700 M2300 OCT 2300 MSIGN OCT 100000 * N1 DEC -1 N2 DEC -2 N3 DEC -3 N4 DEC -4 N5 DEC -5 N6 DEC -6 N8 DEC -8 N16 DEC -16 N64 DEC -64 N160 DEC -160 P1 DEC 1 P2 DEC 2 P4 DEC 4 P6 DEC 6 P7 DEC 7 P15 DEC 15 P17 DEC 17 P18 DEC 18 P23 DEC 23 P25 DEC 25 P31 DEC 31 P64 DEC 64 P74 DEC 74 P128 DEC 128 BLANK OCT 40 ZERO OCT 60 CTEMP NOP DTEMP NOP STEMP NOP TTEMP NOP HED INTERACTIVE DISC SET UP SECTION * * THE FOLLOWING MESSAGES ARE PRINTED DURING THE INITIALIZATION * PHASE, WITH THE SPECIFICATIONS FOR EACH VALID RESONSE. * * * MESSAGE RESPONSE * * CONTROLLER SELECT CODE? ENTER 2 OCTAL DIGITS * * 13037 TYPE SYSTEM DISC: * MODEL,#TRKS,FIRST CYL,HEAD,#SURFACES,UNIT,#SPARES FOR SUBCHNL: * OR * HPIB SYSTEM DISC: * MODEL,#TRKS,FIRST CYL,HEAD,#SURFACES,ADDRESS,#SPARES(,UNIT) FOR SUBCHNL: * * 0? * . * . * . * . * 32? * * SYSTEM SUBCHNL? ENTER 1 OCTAL DIGIT * * AUX DISC (YES OR NO OR #TRACKS)? ENTER YES OR NO OR #TRACKS * * AUX DISC SUBCHNL? ENTER 1 OCTAL DIGIT * * DISC MODEL # ? ENTER MODEL NUMBER SPC 3 \DST5 NOP ENTRY POINT FOR QUESTION SECESSION. LDB $TB32 PUT $TB32 OR $TA32 IN SYM TBL LDA \IBI GET SYS DISC TYPE SLA IS IT ICD?? LDB $TA32 YES- PUT $TA32 IN SYM TBL JSB \LSTE NOP IGNOR AL\READY THERE RETURN CHNLD LDA P23 LDB MESS2 MESS2 = ADDR: CONTROLLER SELECT CODE? JSB \READ PRINT MESSAGE, GET REPLY LDA P2 SET FOR 2 OCTAL DIGITS INPUT JSB \DCON GET DIGITS, RETURN OCTAL JMP CHNLD REPEAT INPUT * STA DCHNL SET DISK CHANNEL NUMBER ADA N8 TEST FOR >= 10 OCTAL SSA,RSS JMP SPRMT OK JSB \INER JMP CHNLD * SPRMT JSB \SPAC LDA \IBI SLA,RSS IS SYS DISC ICD?? JMP STB30 NO-SEND THE APPROP. PROMPT * LDA MSIBI GET THE IBI SUFFIX FOR THE MESSAGE LDB MS1A APPEND IT HERE. MVW P18 * STB30 LDA P74 SEND PROMPT: "MODEL,#TRKS,FIRST CYL,HEAD, LDB MES1 #SURFACES,(UNIT/ADDRESS),#SPARES(,UNIT) JSB \MESS FOR SUBCHNL:" LDA ATB30 SET ADDRESSES STA STEMP FOR INPUT STA INTMP AND CLEAR LOOPS LDB N160 =-160 CLEAR CLA THE TB30. STA INTMP,I TRACK ISZ INTMP MAP INB,SZB STEP COUNT - DONE? JMP TB30. NO - CLEAR NEXT WORD * STA #SUBC SET 0 DEFINED SUBCHANNELS TB30A STB INTMP SAVE CURRENT UNIT LDA B CONVERT FOR THE MESSAGE CMA,INA LDB DSBUF JSB \CONV LDA SBUF+2 STA MS3+2 SET IN THE MESSAGE LDB MS3 GET MESSAGE ADDRESS LDA P5 AND LENGTH JSB \READ GO GET THE ANSWER LDA N2 GET FIRST JSB \GETN TWO CHARACTERS CPA "/E" /E? JMP TB30X YES - GO CHECK FURTHER * JSB \GINT NO - REINITIALIZE LBUF SCAN LDA N6 GET 6 ASCII - MODEL # JSB \GETN JSB \MTCH LOOK UP SECTORS/TRK IN MODEL TABLE DEF *+6 DEF \MDTB TABLE ADDR DEF \TBUF KEY ADDR DEC 10 DEPTH OF SEARCH DEC 3 KEY LENGTH DEC 5 ENTRY LENGTH JMP TB30E \MTCH ERROR-INVALID MODEL # * ADA P3 OFFSET TO GET SEC/TRK LDB A,I STB STEMP,I SAVE IT AWAY IN TMT INA * LDA A,I GET DISC TYPE WORD RAL ICD FLAG IN BIT0,88020 FLAG IN BIT15 STA DTEMP SAVE IT FOR LATER XOR \IBI MAKE SURE THIS DISC'S ICD BIT SLA IS THE SAME AS THE SYS DISC! JMP TB30E NOPE-THEY TRIED TO MIX 13037 & ICD * LDA N4 CONVERT 4 DIGITS JSB \GET# DECIMAL #TRACKS JMP TB30E ERROR - * STA TTEMP SET # TRACKS IN TEMP SZA,RSS IF ZERO JMP TB30E ERROR- CAN'T HAVE 0 TRK SUBCH * JSB \GETC NOT ZERO - GET NEXT CHARACTER CPA BLANK COMMA IN? RSS YES - SKIP JMP TB30E NO - ERROR * LDA N3 SET FOR JSB GET 3 DECIMAL DIGITS AND CONVERT STA CTEMP THE CYL # FOR TRACK 0. LDA N2 GET 2 DIGIT JSB GET HEAD NUMBER STA B SAVE ADA N64 MUST BE LESS THAN 64... SSA,RSS WELL? JMP TB30E NO - BITCH * BLF PUT IN ITS PLACE STB BSHED AND SAVE LDA N2 NOW GET # SURFACES JSB GET MUST BE 1 TO 63... STA B SZA ADA N64 SSA,RSS WELL? JMP TB30E NOT GOOD! BITCH BLF,BLF SHIFT INTO PLACE RBL,RBL AND ADB BSHED COMBINE WITH HEAD STB BSHED * LDA N2 NOW GET UNIT JSB GET MUST BE 0 TO 15... STA B ADA N16 SSA,RSS WELL?? JMP TB30E NO - COMPLAIN. ADB BSHED COMBINE STB BSHED SAVE JSB \GETC TEST FOR SPARES CPA BLANK WELL? RSS YES, SO SET TO CONVERT 3 DIGITS JMP TB30E NO, ERROR -REQUIRE # SPARES NOW * LDA N3 JSB GET CONVERT THE # SPARES LDB A SET IN B TOO ADB M7400 SUBTRACT 256 SSB,RSS #SPARES <= 255?? JMP TB30E NO..GIVE AN ERROR * LDB DTEMP GET DISC TYPE AGAIN SLB,RSS TEST ICD TYPE BIT JMP EOLIN NO-13037 TYPE DISC * IOR MSIGN SET THE ICD BIT STA DTEMP * SSB,RSS TEST IF ICD UNIT# REQ'D JMP EOLIN NO UNIT REQ'D-CHECK FOR END OF LINE CLA,INA JSB GET GET UNIT# FOR ICD DISC 88020 LSL 10 SHIFT IT INTO PLACE IOR DTEMP ADD IN REST OF SPARES WORD * EOLIN STA DTEMP SAVE SPARES/(ICD UNIT) WORD JSB \GETC END OF LINE? SZA WELL? JMP TB30E NO - TOO BAD - AND YOU ALMOST * MADE IT TOO. TB30C ISZ STEMP STEP TO WORD 1- 1ST CYLINDER LDA CTEMP GET 1ST CYL STA STEMP,I SAVE IT AWAY IN TMT ISZ STEMP STEP TO HEAD/UNIT WORD. LDA BSHED AND STA STEMP,I SALT IT AWAY. ISZ STEMP NOW THE # TRACKS LDA TTEMP WORD STA STEMP,I SALT IT AWAY. STA DSIZE SET ALSO FOR ASSUMPTION ISZ STEMP STEP TO SPARES/HPIB UNIT# (IF REQ'D) LDA DTEMP AND STA STEMP,I SALT THAT AWAY TOO. LDA INTMP TO THIS SUBCHANNEL STA SYSCH FOR DEFAULT TB30B ISZ #SUBC STEP TOTAL SUBCHANNEL COUNT ISZ STEMP STEP TABLE ISZ INTMP STEP SUBCHANNEL TB30F LDB INTMP IF CURRENT SUBCHANNEL CPB P32 IS 32 THEN JMP TB30Y DONE SO GO EXIT * JMP TB30A NOT 32 - GO ASK FOR NEXT ONE * SPC 1 TB30E JSB \INER TELL HIM THERE WAS AN ERROR JMP TB30F GO ASK AGAIN * SPC 1 TB30X JSB \GETC /E ENTERED SZA ANY THING ELSE? JMP TB30E YES - ERROR * TB30Y LDA #SUBC NO - GET NUMBER OF CHANNELS CMA,INA,SZA DEFINED - IS IT ZERO? JMP TB30Z NO - SKIP * JSB \INER YES - TELL HIM JMP STB30 AND RESTART * TB30Z JSB \SPAC ISYSC LDA P15 SEND MESSAGE: LDB MES5 SYSTEM SUBCHNL? JSB \READ GET ANSWER LDA N4 DECIMAL DIGITS JSB \DCON GO CONVERT JMP ISYSC ERROR - TRY AGAIN * JSB TSTCH TEST FOR LEGAL SUBCHANNEL STB DSIZE SET SYSTEM SIZE STA SYSCH SET SYSTEM SUBCHANNEL ADB M7400 TEST FOR TOO MANY TRACKS CMB,SSB,INB,SZB OK? JMP SYSER NO GO BITCH * LDA SYSCH GET SYS SUBCHANNEL MPY P5 OFFSET INTO TMT.. ADA ATB30 TO SEC/TRK WORD LDB A,I GET SEC/TRK FROM TMT CPB \SCTK CONSISTENT W/ DISC IN "SYSTEM DISC MODEL?" RESPONSE? RSS YES - OK JMP SYSER NO - SCOLD THEM * LDA SYSCH * * SET VALUES FOR THE BOOT * RSS SETEM CLA SUBCHANNEL IN A MPY P5 CALC OFFSET LDB ATB30 POSITION WITHIN TMT FOR INFO ADB A * INB STEP TO 1ST CYLINDER WORD LDA B,I GET FIRST CYLINDER # STA TBASE SET FIRST CYL FOR MAC BOOT EXT STA HTBAS ALSO FOR ICD BOOT EXT. STA PT#TR SET 1ST CYL FOR MAC STRAP STA PT#T2 SET 1ST CYL " " " AND M377 GET 1ST CYL-LO BYTE STA !CYLL SET FOR ICD STRAP LDA B,I FRESH COPY ALF,ALF ROTATE AND M377 GET 1ST CYL-HI BYTE STA !CYLH SET FOR ICD STRAP * INB LDA B,I LDB A AND M1760 1760 OCTAL MASK ALF SHIFT INTO PLACE STA H#AD SET HD# FOR MAC STRAP COMMANDS STA PT#H2 " " " " " ALF,ALF STA BHD# SET BASE HD# FOR MAC BOOT EXT STA BHED# ALSO FOR ICD BOOT STA !HEAD ALSO FOR ICD STRAP * LDA B FRESH COPY ALF RAL,RAL SHIFT INTO PLACE AND M77 MASK OFF # OF SURFACES STA #HDS SET FOR ICD BOOT EXT STA #HEDS ALSO FOR ICD BOOT * LDA B AND M17 GOT THE UNIT LDB WA#KE NOW INCORPORATE IT ADB A IT INTO THE WAKEUP, STB WA#KE SEEK,AND \READ COMMANDS STB WAK * LDB PT#SK ADB A STB PT#SK STB SKCMD * LDB PT#AD ADB A STB PT#AD STB AD#RC * LDB R#DCM ADB A STB R#DCM STB R#CMD * LDB P#EN ADB A STB P#EN STB S#TAC * STA !UNIT SET ADDR. SEL. FOR ICD STRAP PPOLL * LDB AD1 GET THE ICD COMMAND ADB A ADD IN THE ADDR SELECT * STB AD1 SET UP ALL ICD OCT 440 COMMANDS STB AD2 FOR ICD BOOT EXT. ... STB AD3 STB AD5 * STB !AD1 FOR ICD BOOT STRAP ... STB !AD2 STB !AD3 STB !AD5 * LDB AD4 GET ICD 550 COMMAND ADB A ADD IN THE ADDR SELECT STB AD4 SET UP ALL ICD 550 COMMANDS STB AD6 STB !AD4 SET EM FOR ICD STRAP TOO STB !AD6 * * LDA \SCTK LSL 6 X 64 TO GET WORDS/TRACK STA #WDTK WDS TRK OF DESTINATION SYS DISC STA WD#TK SET FOR ICD BOOT ALSO * SPC 1 AUXIN CLA PRESET TO SHOW NO AUX DISC STA DAUXN SET CHANNEL TO ZERO STA ADS# #SECT PER TRACK TO ZERO, CCA AND SUBCHANNEL STA AUXCH TO -1. JSB \SPAC AUXDS LDA P31 SEND MESSAGE LDB MES6 AUX DISC (YES OR NO OR # TRKS)? JSB \READ GO GET ANSWER LDA N3 FIRST TRY FOR A DECIMAL JSB \GET# NUMBER JMP AUX0 NO TRY FOR YES OR NO * STA \TBUF SAVE THE NUMBER JSB \GETC END OF INPUT? SZA JMP AUX0 NO LET \YENO SEND ERROR * LDA \TBUF GET BACK THE SIZE STA DAUXN SET THE AUX DISC SIZE JSB DSSIZ GET ITS # SECTORS / TRACK JMP AUX3 GO SET IT * AUX0 JSB \GINT RESET THE SCANNER JSB \YENO TRY FOR YES OR NO JMP AUXDS NO MUST BE BAD ANSWER * JMP STSCR NO - SKIP * CLA,INA YES - IF ONLY ONE CPA #SUBC DISC SUBCHANNEL THEN JMP AUX4 THEN WRONG ANSWER TRY AGAIN * JSB \SPAC YES - SET UP AUX UNIT AUXUN LDA P17 SEND QUESTION: LDB MES7 AUX DISC SUBCHNL? JSB \READ GO SEND AND GET ANSWER LDA N4 JSB \DCON JMP AUXUN ERROR - TRY AGAIN * JSB TSTCH TEST FOR LEGAL UNIT AUX1 STB DAUXN SET SIZE OF AUX UNIT CPA SYSCH SAME AS SYSTEM? RSS YES - ERROR SKIP JMP AUX2 NO - GO SET UP * AUX4 JSB \INER SEND ERROR MESSAGE JMP AUXIN AND TRY AGAIN * SYSER JSB \INER SEND ERROR MESSAGE JMP ISYSC TRY AGAIN * AUX2 ADB M7400 TOO MANY TRACKS FOR AUX CMB,SSB,INB,SZB DISC? JMP AUX4 YES GO BITCH SPC 1 STA AUXCH SET AUX CHANNEL MPY P5 OFFSET INTO TMT ADA ATB30 LDA A,I PICK UP SEC/TRK OF AUX CHANNEL AUX3 STA ADS# SET AUX DISC # SECT. TRACK SPC 1 * NOTE: THE FACT THAT ANY GIVEN DISC * ADDRESS IS ON A UNIT OTHER THAN * THE SYSTEM UNIT IS FLAGGED BY * ITS TRACK ADDRESS BEING GREATER THAN * 400 BY THE AMOUNT OF THE DESIRED * TRACK. STSCR JMP \DST5,I RETURN TO MAIN LINE CODE SPC 1 P3 DEC 3 P5 DEC 5 P14 DEC 14 P32 DEC 32 BSHED NOP SPC 1 * * GET # SECTORS FOR DISC * DSSIZ NOP JSB \SPAC NEW LINE RSS #SEC1 JSB \INER INVALID DISC MODEL # LDA P14 LDB MES40 MES40 = ADDR: DISC MODEL # ? JSB \READ PRINT MESSAGE, GET REPLY LDA N6 SET FOR 6 ASCII CHARS INPUT