IDENT OSB,OSB PERIPH MACHINE 6,A INFORM CTI OF CLOCK SUPPORT BASE M SST TITLE OSB - OPERATING SYSTEM BOOTSTRAP. *COMMENT OSB - OPERATING SYSTEM BOOTSTRAP. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. OSB SPACE 4,10 ***** OSB - OPERATING SYSTEM BOOTSTRAP. * * P. D. HAAS. 78/07/31. OSB SPACE 4,10 *** *OSB* IS THE OPERATING SYSTEM BOOTSTRAP LOADED BY * *CTI*. ITS SOLE PURPOSE IS TO LOAD *DIO* FROM THE DEAD- * START MEDIUM TO THE PP ON THE DISPLAY CHANNEL. SPACE 4,10 *** OPERATOR MESSAGES. * * *ERROR LOADING -DIO-.* OSB SPACE 4,10 *CALL COMPMAC *CALL COMSDSL *CALL COMSMSP *CALL COMSPIM FWDL$ EQU 1 LINK CHANNEL INSTRUCTIONS FORWARD *CALL COMPCHL OSB SPACE 4,10 **** DIRECT LOCATION ASSIGNMENTS. LOC 20 DT BSS 1 895 DEADSTART READ FLAG ERRNZ DT-MP DIRECT CELL LOCATION IN *DIO* MUST MATCH UN BSS 4 PHYSICAL DISK ADDRESS L1 BSS 1 SCRATCH L2 BSS 1 SCRATCH AP BSS 1 DISK ADDRESS POINTER **** OSB SPACE 4,10 ** ASSEMBLY CONSTANTS. BUF EQU 100 BUFFER ADDRESS TITLE MAIN ROUTINE. OSB SPACE 4,10 ORG DSLA+5*20 OSB LDM DPW10A DEADSTART CHANNEL LPN 37 STD CM LDC CH01$ SET ADDRESS OF FIRST CHANNEL INSTRUCTION STD T1 LDM DCST SET DISPLAY CONSOLE STATUS STD LA LDN 0 OSB1 RAD T1 ADDRESS OF CURRENT CHANNEL INSTRUCTION LDI T1 SAVE LINK TO NEXT INSTRUCTION LPN 37 STD T2 LDD CM MODIFY CHANNEL INSTRUCTION SBD T2 RAI T1 LDD T2 NJN OSB1 IF MORE INSTRUCTIONS TO MODIFY STD DT PRESET NOT 895 DEVICE TYPE RJM RDR READ DISK (TAPE) RECORD ZJN ERR IF LOAD ERRORS LDM BUF+5*1+1 CHECK RECORD NAME SHN 6 LMM BUF+5*1+0 LMC 3RODI NJN ERR IF NOT *DIO* LDM PPSDA GET PP SPEED STD T3 LDC MXRL TRANSMIT *DIO* OAM. BUF+5*20,CH LDN 77 TRANSMIT PARAMETERS OAM. 0,CH DCN. MR+40 CCF. *+2,MX ALLOW *MDD* TO EXECUTE DCN. CH+40 ACN. CH IAM. 0,CH INPUT *SET* ERR LDD LA ZJN ERR1 IF DEADSTART FROM CC545 CONSOLE LCN 0 CLEAR DISPLAY RJM CDDP LCN 77-ERRA+ERR1 RAM ERRA ERR1 LDC ERRB DISPLAY ERROR MESSAGE RJM CDDP ERRA UJN ERR1 HANG PP IN LOOP ERRB CON ERRC CON 0 ERRC CON 113 DATA C*ERROR LOADING -DIO-.* TITLE MAJOR SUBROUTINES. RDR SPACE 4,10 ** RDR - READ DISK RECORD. * * EXIT (A) = 0 IF ERROR. * (T4) = UNIT NUMBER. * (T5) = SEEK FUNCTION + ALGORITHM INDEX. * * USES T1, T6, T7, UN. * * CALLS POS, RNS, RTR. RDR4 RJM RTR READ TAPE RECORD RDR SUBR ENTRY/EXIT LDM DPW5A DEADSTART PANEL WORD 5 ZJN RDR4 IF TAPE DEADSTART LDM OSDPA+3 *OSB* SEEK FUNCTION STD T5 SHN 14 STM POSA SHN -14 LMN AIDC NJN RDR0 IF NOT 895 LDC 2000 SET 895 DEADSTART FLAG ON SEEK STD DT SAVE 895 DEADSTART FLAG FOR *DIO* SHN 6-12 RAM POSB SOM POSC RDR0 LDM OSDPA+4 *OSB* TRACK STD T6 LDM DSLA-2 FIRST *DIO* SECTOR FROM *OSB* LINKAGE STD T7 SHN 21-13 PJN RDR1 IF NOT TRACK SWITCH SHN 13-21 STD T6 SET NEXT TRACK LDN 0 STD T7 RDR1 LDM DPW6A UNIT NUMBER LPN 77 STD UN STD T4 LDC OSRPA DISK ADDRESS POINTER STD AP LDC BUF SET BUFFER ADDRESS STD T1 RJM POS POSITION MASS STORAGE RDR2 LDD T1 READ NEXT SECTOR RJM RNS PJN RDR3 IF ERROR / EOR LDC DSLN ADVANCE BUFFER ADDRESS RAD T1 LMC BUF+TPLN NJN RDR2 IF NOT GREATER THAN TAPE PRU RDR3 LJM RDRX RETURN RTR SPACE 4,10 ** RTR - READ TAPE RECORD. * * EXIT (A) = 0 IF ERROR. * (T6) = 0. * (T7) = DEADSTART FUNCTION. RTR SUBR ENTRY/EXIT LDM DPW6A DEADSTART FUNCTION STD T7 LPC 7000 EXTRACT EQUIPMENT NUMBER RAM RTRA RTR2 LDN 0 SET TAPE DEADSTART FLAG STD T6 FNC 40,0 RTRA EQU *-1 LDC TPLN+4 INPUT TAPE RECORD ACN 0 IAM BUF,0 UJN RTRX RETURN TITLE SUBROUTINES. GDS SPACE 4,10 ** GDS - GET DISK STATUS. * * EXIT (A) = GENERAL STATUS. GDS SUBR ENTRY/EXIT FNC 12,0 GET GENERAL STATUS ACN 0 IAN 0 UJN GDSX RETURN POS SPACE 4,15 ** POS - POSITION MASS STORAGE. * * ENTRY (AP) = POINTER TO DISK ADDRESS. * (UN) = UNIT NUMBER. * (POSA) = SEEK FUNCTION. * * EXIT (UN+1) = PHYSICAL CYLINDER. * (UN+2) = PHYSICAL TRACK. * (UN+3) = PHYSICAL SECTOR. * (AP) ADVANCED TO NEXT ADDRESS. * * CALLS GDS. POS SUBR ENTRY/EXIT LDI AP SET CYLINDER STD UN+1 AOD AP ADVANCE ADDRESS POINTER LDI AP UNPACK SECTOR LPC 77 POSB EQU *-1 * LPC 177 (IF 895) STD UN+3 LDI AP SET TRACK POSC SHN -6 * SHN -7 (IF 895) LMD DT SET 895 DEADSTART READ FLAG STD UN+2 AOD AP ADVANCE POINTER ADDRESS POS1 FNC 2,0 SEEK FUNCTION POSA EQU *-1 * FNC 1,0 (1 TO 1 INTERLACE) ACN 0 LDN 4 OUTPUT SEEK PARAMETERS OAM UN,0 FJM *,0 DCN 0+40 RJM GDS GET DISK STATUS ZJN POSX IF READY UJN POS1 LOOP UNTIL READY RNS SPACE 4,10 ** RNS - READ NEXT SECTOR. * * ENTRY (A) = READ ADDRESS. * * EXIT (A) = 0 IF ERROR. * .GT. 0 IF EOR. * .LT. 0 IF FULL SECTOR WORD COUNT. * (T6) = LOGICAL TRACK FOR NEXT READ. * (T7) = LOGICAL SECTOR FOR NEXT READ. * * USES T3, L1, L2. * * CALLS GDS, POS. RNS SUBR ENTRY/EXIT SBN 2 SET READ ADDRESS STD T3 STM RNSA LDI T3 SAVE LOCATIONS OVERLAID BY LINKAGE STD L1 LDM 1,T3 STD L2 FNC 4,0 READ DISK SECTOR LDC DSLN+2 ACN 0 IAM BUF,0 RNSA EQU *-1 RNS1 RJM GDS GET DISK STATUS NJN RNS1 IF NOT READY AOD T7 ADVANCE LOGICAL SECTOR LMI T3 ZJN RNS2 IF MATCHING SECTOR LINKAGE LDN 0 SET FIRST SECTOR STD T7 LDI T3 SET NEXT TRACK STD T6 SHN 0-13 ZJN RNS3 IF NOT TRACK SWITCH RJM POS POSITION MASS STORAGE RNS2 LDD L1 RESTORE CELLS OVERLAID BY LINKAGE STI T3 AOD T3 LDI T3 SHN -6 SHN 21-0 SIGN BIT = FULL SECTOR FLAG LMD L2 STI T3 ADN 1 NO ERROR ON EOR RNS3 LJM RNSX RETURN SPACE 4,10 HERE TERMINATE LINKED CHANNEL INSTRUCTIONS SPACE 4,10 ERRPL *-DSLA-473 *OSB* OVERFLOWS ONE SECTOR END