File: MOD43.PA of Tape: Various/System-Tapes/s5
(Source file text)
/OS/8 NON-SYSTEM HANDLER FOR MOD 43 /SYSTEM INDUSTRIES, INC. /535 DEL REY AVENUE /SUNNYVALE, CALIFORNIA 94086 /THIS HANDLER WILL SUPPORT TWO /SERIES 43 DISK DRIVE ON PORT 0 & 1 /OF A 3040 DISK CONTROLLER /DSK0, 1, 4, AND 5 RESIDE ON THE /FIXED PLATTERS /DSK2, 3, 6, AND 7 ARE ON THE /REMOVABLE PLATTERS /RAL 6/74 DCODE=50 /CONTROLLER DEVICE CODE DSDD=10^DCODE+6001 DLCR=10^DCODE+6002 DCSR=10^DCODE+6004 DSDE=10^DCODE+6011 DLSR=10^DCODE+6012 DSRR=10^DCODE+6013 DLTR=10^DCODE+6014 DWCA=10^DCODE+6017 DOFF=146 UNIT0=0 UNIT1=1 PLATTER=2000 TEMP=DKTR1 BSW=7002 /HEADER BLOCK *0 -10 /10 (8) DEVICES DEVICE SIDK; DEVICE DSK0; 4410; DK0+0-200; ZBLOCK 2 DEVICE SIDK; DEVICE DSK1; 4410; DK0+1-200; ZBLOCK 2 DEVICE SIDK; DEVICE DSK2; 4410; DK0+2-200; ZBLOCK 2 DEVICE SIDK; DEVICE DSK3; 4410; DK0+3-200; ZBLOCK 2 DEVICE SIDK; DEVICE DSK4; 4410; DK0+4-200; ZBLOCK 2 DEVICE SIDK; DEVICE DSK5; 4410; DK0+5-200; ZBLOCK 2 DEVICE SIDK; DEVICE DSK6; 4410; DK0+6-200; ZBLOCK 2 DEVICE SIDK; DEVICE DSK7; 4410; DK0+7-200; ZBLOCK 2 EJECT *200 DKHLP, DLCR /SET CONTROLLER BREAK FIELD DCSR /CLEAR STATUS JMS DKTR1 /GET POINTER DKTR1, 0 //ALSO USED AS TEMP BUFF TAD DKTR1 TAD (DKWCT-DKTR1 DWCA CLA CLL TAD (DLTR DCA DKIOU /SET UP FOR READ TAD DKWD1 SPA ISZ DKIOU /CHANGE TO WRITE BSW AND (7000 /GET DATA BUFFER FIELD DCA TEMP DKST2, HLT /GET CONTROL TABLE ENTRY DCA DKWCT+3 TAD DKWCT+3 RTL ; RAL AND (10 TAD TEMP DLCR CLA CLL TAD DKWCT+2 AND (17 DLSR /OUTPUT SECTOR ADDRESS CLL CLA TAD DKWCT+2 AND M20 RTR;RTR TAD DKWCT+3 DKIOU, HLT /OUTPUT TRACK ADDRESS AND PORT NUMBER CLL CLA DSDD JMP .-1 /WAIT FOR DISK TO FINISH KSF /CK FOR CTRL/C JMP DCTL1 KRS TAD (-203 SNA CLA JMP DKCDI /EXIT TO SYSTEM DCTL1, DSDE /WAS THERE A DISK ERROR? JMP DKOUT-2 /NO, GO EXIT ISZ DKERCT JMP DKHLP CLL CML JMP DKOUT-1 /AVOID EXIT FIXER M20, -20 P2000, 2000 EJECT /THIS IS REAL ENTRY CHAIN DK0, 0 ISZ DKNO ISZ DKNO ISZ DKNO ISZ DKNO ISZ DKNO ISZ DKNO ISZ DKNO DK7600, 7600 /CLEAN OUT POTENTIALLY MESSY AC TAD DKNO CIA TAD (TAD DK0+7 DCA DKST1 TAD DKST1 TAD (DKOFFS-DK0 DCA DKST2 TAD DKST1 TAD P2000 DCA DKOUT /SET UP ENTRY RESTORE DCA DKNO DKST1, HLT /GET CALLER ADDRESS DCA DKE /PUT IT IN A CANONICAL LOCATION RDF /FIND OUT CALLER'S FIELD TAD DKCDI DCA DKOUT+2 /FIX UP EXIT FOR FIELD CHANGING TAD I DKE DCA DKWD1 ISZ DKE TAD I DKE DCA DKWCT+1 /SAVE CORE ADDRESS ISZ DKE TAD I DKE DCA DKWCT+2 /PICK UP ALL THE ARGUMENTS ISZ DKE /PARTIALLY FIX THE EXIT /STILL MORE INITIALIZATION TO DO EJECT TAD DKWD1 CLL RAL AND DK7600 SNA /IS WORD COUNT = 0? JMP DKOUT-2 /YES, TAKE NORMAL EXIT DCA DKWCT /GENERATE WORD COUNT FOR DATA X-FER TAD M20 DCA DKERCT JMP DKHLP /GO DO REAL WORK ISZ DKE /EXIT CONTROL - NORMAL EXIT TAD (ISZ DKNO DKOUT, HLT /RESET ENTRY ISZ CLA RAR HLT /CHANGE BACK TO CALLERS FIELD JMP I DKE /EXIT DKCDI, CDF CIF 0 JMP I DK7600 EJECT DKE, 0 DKERCT, 0 DKNO, 0 DKWD1, 0 DKWCT, 0 0 0 0 /EQUATION FOR DKOFFS IS: / TRACK OFFSET+PLATTER BIT*2000+UNIT BIT / PLATTER BIT IS 1 FOR REMOVABLE PLATTER, 0 FOR FIXED / UNIT BIT IS 0 FOR UNIT 0, 1 FOR UNIT 1 DKOFFS, UNIT0 /DSK0 UNIT0+DOFF /DSK1 UNIT0+PLATTER /DSK2 UNIT0+PLATTER+DOFF /DSK3 UNIT1 /DSK4 UNIT1+DOFF /DSK5 UNIT1+PLATTER /DSK6 UNIT1+PLATTER+DOFF /DSK7 $$$$