File: BOOT40.MA of Tape: OS8/OS8-V40/v40-8
(Source file text)
/BOOT FOR KBM V40 / / / / / / / / / /COPYRIGHT (C) 1977 BY DIGITAL EQUIPMENT CORPORATION / AND 1979 BY DATAPLAN GMBH / / / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. / /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. / /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY /DIGITAL. / / / / / / / / / / / /SR /FIXES MADE FOR MAINTENANCE RELEASE: /1. ADDED RX01 (FLOPPY BOOTSTRAP) /2. LEFT PATCH SPACE IN NAME TABLE / 26-DEC-77 /1. ADDED RL BOOTSTRAP (S.R.) /WVDM /1. LOWER CASE /2. MACREL /3. MULTI8 /4. GERMAN /5. SI DISK /INSTRUCTIONS THAT GENERATE CONSTANTS AC0001=CLA IAC AC0002=CLA CLL CML RTL AC0003=CLA CLL CML IAC RAL AC0004=CLA CLL IAC RTL AC0006=CLA CLL CML IAC RTL AC0100=CLA IAC BSW AC2000=CLA CLL CML RTR AC3777=CLA CLL CMA RAR AC4000=CLA CLL CML RAR AC5777=CLA CLL CMA RTR AC6000=CLA CLL CML IAC RTR AC7775=CLA CLL CMA RTL AC7776=CLA CLL CMA RAL GERMAN=1 .ASECT BOOT,ROOT FIELD 0 *2000 .START START,0 .JSW 7403 START, CLA /ALLOW BEING CHAINED TO IOF TAD I (7600 SPA CLA JMP OS8IN ISZ INNER JMP .-1 ISZ OUTR JMP .-3 JMS I (TESTRK COSIN, TAD I (7776 COMN, CIA DCA CODE TAD (TABLE DCA PTR LOOP, TAD I PTR SNA JMP I (OS8 TAD CODE SZA CLA JMP NXT ISZ PTR TAD I PTR DCA OLDLOC ISZ PTR TAD I PTR DCA NEWLOC ISZ PTR TAD I PTR CIA DCA LENGTH XXLUP, TAD I OLDLOC DCA I NEWLOC ISZ OLDLOC ISZ NEWLOC ISZ LENGTH JMP XXLUP ISZ PTR TAD I PTR DCA TEMP TAD HLTSWT SNA CLA HLT CLL JMP I TEMP NXT, TAD PTR TAD (5 DCA PTR JMP LOOP OS8IN, TAD I (7600 TAD (-4207 SZA CLA JMP I (RETRY TAD I (1000 TAD (777 SNA CLA TAD (600 TAD (1000-1 DCA SCAN SKAN, ISZ SCAN TAD I SCAN SNA JMP I (RETRY AND (177 TAD (-<"/&177> SZA CLA JMP SKAN ISZ SCAN TAD I SCAN AND (37 BSW DCA TEMP ISZ SCAN TAD I SCAN AND (37 TAD TEMP DCA TEMP ISZ SCAN TAD I SCAN AND (177 TAD (-<".&177> DCA HLTSWT TAD TEMP JMP COMN HLTSWT, 1 INNER, 0 OUTR, -20 CODE, 0 LENGTH, 0 OLDLOC, 0 NEWLOC, 0 PTR, 0 SCAN, 0 TEMP, 0 PAGE LV, "V V1, "4 V2, "0 PTCLEV, "B VERS, TAD LV JMS PUT TAD V1 JMS PUT TAD V2 JMS PUT TAD PTCLEV JMS PUT JMP I (RETRY DIML=6615 DISK, CLA IAC DIML SNA CLA JMP GOTRF TAD (70 6732 SNA CLA JMP GOTRK8 CLA IAC 6744 SNA CLA JMP GOTRE STA 6512 CLA 6513 TAD (-17 SZA CLA JMP I (RETRY TAD ('SI JMP I (COMN GOTRE, STA /RE GOTRF, TAD ('RF /RF JMP I (COMN GOTRK8, TAD ('RK /RK JMP I (COMN TAPE, 6141 /LINC 17 /COMPL AC 2 /PDP IAC SNA CLA JMP GOTLTA TAD (70 6774 CLA 6772 NOP TAD (-70 SNA CLA JMP GOTTC AC4000 6774 CLA 6776 SMA CLA JMP I (RETRY GOTTD, CLA IAC GOTTC, TAD ('TC /TC JMP I (COMN GOTLTA, TAD ('LT /LT JMP I (COMN CRLF, 0 TAD (215 JMS PUT TAD (212 JMS PUT JMP I CRLF PUT, 0 TLS TSF JMP .-1 CLA JMP I PUT GET, 0 KSF JMP .-1 KRB AND (177 TLS TSF JMP .-1 TAD (-003 SNA JMP I (7605 TAD (003-177 SNA JMP I (RETRY TAD (177-015 SZA ISZ GET TAD (015 JMP I GET TESTRK, 0 TAD (70 6732 SNA CLA JMP I TESTRK RK05, TAD (RK8E DCA I (RKADR JMP I TESTRK PAGE OS8, .IF NDF GERMAN < TAD ("N JMS I (PUT TAD ("O JMS I (PUT > .IF DF GERMAN < TAD ("N JMS I (PUT TAD ("e JMS I (PUT TAD ("i JMS I (PUT TAD ("n JMS I (PUT > RETRY, CLA CLL JMS I (CRLF TAD ("/ JMS I (PUT JMS I (GET JMP RETRY AND (37 BSW DCA I (TEMP JMS I (GET JMP RETRY AND (37 TAD I (TEMP DCA I (TEMP RETMOR, JMS I (GET JMP RETEND TAD (-<".&177> DCA I (HLTSWT JMP RETMOR RETEND, CLA CLL JMS I (CRLF TAD I (TEMP JMP I (COMN / PAGE /FORMAT: / /SIXBIT OF 2-CHARACTER NAME /ADDRESS OF BOOTSTRAP CODE IN BOOT /ADDRESS WHERE BOOTSTRAP CODE IS TO BE MOVED TO /LENGTH OF BOOTSTRAP IN WORDS /STARTING ADDRESS OF BOOTSTRAP TABLE, 'TC DECTAP 7554 25 7554 'RK RKADR, RK8 21 11 21 'TD TD8E TD8EST 34 TD8EST 'LT LINCTP 4400 7 4400 'RF RF08 7746 7 7746 'PT BINLDR 7626 152 7700 'ZE ZERO ZERSTR 6 ZERSTR 'TY TYPSET 7730 42 7730 'DL DIAL 4012 6 4012 'CA CAS 4000 40 4000 'DM DSKMON 171 16 174 'VE VERS VERS 1 VERS 'DT TAPE TAPE 1 TAPE 'DK DISK DISK 1 DISK 'RE RK8E RK8EST 11 RK8EST 'SI SIDK SIDKST 6 SIDKST 'RX RX01 RX8E 42 RXSTRT 'RL RL01 RLPRIM 35 RLPRIM 'VX VXA0 VXSTR 7 VXSTR 'MU M8 M8STR 14 M8STR ZBLOCK 3^5 /PATCH SPACE 0 PAGE DECTAP, 7600 6774 1374 6766 6771 5360 7240 1354 3773 1354 3772 1375 6766 5376 7754 7755 0600 0220 6771 5376 RK8, 6732 6751 6745 5023 6742 6753 6755 6733 5031 RK8E, RELOC 21 RK8EST, NOP NOP NOP NOP AC0001 6742 6742 6743 JMP . RELOC TD8E, RELOC 7300-1 TD8EST, 6007 1312 4312 4312 6773 5303 6777 3726 2326 5303 5732 2000 1300 6774 6771 5315 6776 0331 1327 7640 5315 2321 5712 7354 7756 7747 0077 7400 RELOC LINCTP, 6141 1020 0020 0004 0700 0000 6020 RF08, 6643 6615 7600 6603 6622 5352 5752 SIDK, RELOC 0 SIDKST, 6502 0000 6517 6512 6514 JMP . RELOC M8, RELOC 20 M8STR, CAF 6254 /SM8 HLT 6000 /MULTI8 HANDLER CALL JMP .+4 200 /2 PAGES 7400 /IN 7400 0 /BLOCK 0 SZA /AC = 0 OK HLT JMP I .+1 7400 /NEW RESTORE/BOOT 1-MAR-80 RELOC BINLDR, 0000 3212 4260 1300 7750 5237 2212 7040 5227 1212 7640 5230 1214 0274 1341 7510 2226 7750 5626 1214 0256 1257 3213 5230 0070 6201 0000 0000 6031 5262 6036 3214 1214 5660 6011 5270 6016 5265 0300 4343 7041 1215 7402 6032 6014 6214 1257 3213 7604 7700 1353 1352 3261 4226 5313 3215 1213 3336 1214 3376 4260 3355 4226 5275 4343 7420 5336 3216 1376 1355 1215 5315 0000 3616 2216 7600 5332 0000 1376 7106 7006 7006 1355 5743 5262 0006 0000 0000 6014 6011 5357 6016 7106 7006 7510 5374 7006 6011 5367 6016 7420 3776 3376 5357 0000 5301 ZERO, RELOC 4 ZERSTR, TAD .+1 DCA I ZXR JMP ZERSTR JMP I ZERSTR ZXR, .+1 ISZ ZXR RELOC DIAL, 6141 1020 0020 0004 0701 7300 LXM=6200 VXA0, RELOC 0 VXSTR, CLA TAD VXENA LXM CIF CDF 4 JMP I .+1 0000 VXENA, 7000 RELOC TYPSET, 6774 1347 4341 7240 1353 3355 1352 4341 5753 7777 6766 3354 6771 5344 5741 4600 7777 7777 4220 7400 7777 7777 7777 6014 6011 5360 7106 6012 7420 5357 5756 4356 3373 4356 DSKMON, 7577 7750 7751 1171 3572 1172 3573 6643 6615 6603 6602 5203 5606 7600 CAS, 1237 1206 6704 6706 6703 5204 7264 6702 7610 3211 3636 1205 6704 6706 6701 5216 7002 7430 1636 7022 3636 7420 2236 2235 5215 7346 7002 3235 5201 7737 3557 7730 / DEVICE IOT SYMBOLIC EQUATES / LCD=6751 /LOAD COMMAND XDR=6752 /TRANSFER DATA STR=6753 /SKIP IF READY TO TRANSFER SER=6754 /SKIP ON ERROR SDN=6755 /SKIP ON DONE RX01, RELOC 20 RX8E, READ, TAD UNIT /TRY NEXT COMBINATION OF DENSITY AND UNIT TAD CON360 /ADDING IN 360 AND CON420 /KEEPING ONLY 420 BITS DCA UNIT /CYCLES 400,420,0,20,400,,,,,,,, AC0006 /COMMAND TO READ DISK - MUST BE ON OMNIBUS! TAD UNIT /UNIT AND DENSITY LCD /COMMAND TO CONTROLLER AC0001 /TO SET SECTOR AND TRACK TO 1 JMS LOAD /SECTOR TO CONTROLLER, LEAVES AC ALONE JMS LOAD /AND TRACK LITRAL, 7004 /LEAVING A 2 IN AC; SERVES AS LITERAL / / FOLLOWING IS PART OF WAIT LOOP, SAME SECONDARY BOOTS, OLD PRIMARY BOOT / RXSTRT, XSTRT, SDN /HAS DONE COME UP; CODE STARTS HERE! JMP LOAD+1 /NO, GO CHECK FOR READY TO TRANSFER / / NOW, DONE OR ERROR / SER /SKIP ON AN ERROR, TRY ANOTHER DENSITY ETC. SNA /NASTY, AC=2 FOR ABOUT TO DO SILO, 0 ON START-UP JMP READ /START-UP, GO SET UP UNIT, THEN READ TO SILO TAD UNIT /AC ALREADY 2, PUT IN UNIT, DENSITY LCD /TO EMPTY THE SILO TAD UNIT /SET UP LOC 60 FOR OLD SECONDARY BOOT AND CON360 /KEEPING UNLY DENSITY BIT TAD LITRAL /ADDING IN 7004, BECAUSE THAT'S WHAT SYS WANTS DCA RX1SAV /OLD SECONDARY BOOT MOVES IT TO HANDLER CON360, 360 /LITERAL; EXECUTES IN LINE AS A NO-OP / /FALLS THRU TO NEXT PAGE OF LISTING / FOLLOWING CODE SAME AS OLD PRIMARY BOOT / JMS LOAD /GRAB NEXT ITEM FROM SILO DCA 2 /TRADITION; SECONDARY BOOT STARTS LOADING AT 2 ! ISZ 50 /INCREMENT LOAD ADDRESS JMP 47 /GO BACK FOR ANOTHER / / SECONDARY BOOT LOADS OVER PRIMARY BOOT UNIT LOCATION 47 IS LOADED, / THEN CONTROL PASSES TO SECONDARY BOOT / LOAD, 0 /SUBROUTINE TO GIVE AND TAKE DATA FROM CONTROLLER STR /IS HE READY TO TALK TO US? JMP XSTRT /NO, IS HE PERHAPS DONE WITH SILO, OR IN ERROR? XDR /YES, DATA IN OR OUT;IF DATA TO CONTROLLER, AC UNCHANGED JMP I LOAD /NO MAGIC, JUST EXIT FROM SUBROUTINE / / 60 GOES TO OLD SECONDARY BOOT / 61 HAS DENSITY AND UNIT THAT BOOTED SUCCESSFULLY / / CON420, /USE IT TO HOLD 420 LITERAL TO START OUT RX1SAV, 420 /UNIT^20+7004 TO GO TO SYS HANDLER UNIT, 20 /<DENSITY^400>+<UNIT^20> THAT BOOTED OK / RELOC /RL01 DEFINITIONS RLIOT=6600 RLDC=RLIOT 0 /CLEAR DEVICE RLSD=RLIOT 1 /SKIP IF DONE RLMA=RLIOT 2 /LOAD MEM ADDR RLCA=RLIOT 3 /LOAD REGISTER "A" RLCB=RLIOT 4 /LOAD REG "B" AND EXECUTE RLSA=RLIOT 5 /LOAD SECTOR ADDR /RLIOT 6 UNUSED RLWC=RLIOT 7 /LOAD WORD COUNT RRER=RLIOT 10 /READ ERROR REG RRWC=RLIOT 11 /READ WORD COUNT RRCA=RLIOT 12 /READ REG "A" RRCB=RLIOT 13 /READ REG "B" RRSA=RLIOT 14 /READ SECTOR ADDR RRSI=RLIOT 15 /READ SILO BYTE /RLIOT 16 UNUSED RLSE=RLIOT 17 /SKIP IF ERROR /RLCB FUNCTION BITS: RLMT=0 /MAINTENANCE MODE RLRE=1 /RESET DRIVE ERRORS RLST=2 /READ STATUS REGS INTO SILO RLSK=3 /SEEK RLRH=4 /READ HEADER RLWR=5 /WRITE RLRD=6 /READ RLRN=7 /READ WITH NO HEADER CHECK /BIT DEFINITIONS IN REGISTERS: BYTE=1000 /BYTE TRANSFER MODE RL01, RELOC 1 RLPRIM, RLDC /CLEAR DRIVE AC0001 JMS IOSUB /RESET DRIVE ERRORS TAD . /=1004 JMS IOSUB /BYTE READ HEADER TO FIND OUT WHERE WE ARE RRSI /READ HEADER BYTE #1 BSW RTR /LSB OF CYLINDER RRSI /READ HEADER BYTE #2 AND C377 RAL /MAKE CYLINDER ADRESS RLCA /USE AS DIFFERENCE FOR SEEK TO 0,0 AC0003 JMS IOSUB /GO SEEK AC2000 /SECTOR 20 RLSA /LOAD IT TAD CM200 RLWC /ONE PAGE WORD COUNT AC0006 JMS IOSUB /READ SECONDARY BOOTSTRAP C377, 0377 /IOSUB DOES NOT RETURN (OVERLAID) CM200, -200 IOSUB, 0 RLCB /EXECUTE FINCTION RLSD /WAIT UNTIL DONE JMP .-1 /'IOSUB' IS ALSO IN SEC. BOOT RLSE /KEEP IT HERE JMP I IOSUB JMP RLPRIM /ERROR : TRY AGAIN RELOC PAGE