" " Begin include file rwdisk.incl.alm " modified 11/2/74 by Noel I. Morris " Modified 5/75 THVV for nss " This is the BOS DIM for movable-arm disks. It has " two entries for each disk, which are used to read and write that disk. " Each of the entry points is called in the following manner: " " lda =v24/sector,12/nsectors " tsx2 entry_name Specify the entry point to be called. " arg =v(3/iom,6/chn,9/unit,18/device_type) " nop seg|offset core area to be used for the i/o. " tra error Error return " rd500: rd450: rd400: rd190: rd181: rd501: ldq disk_read*4096,du read command in Q tra rwi_common join common code wd500: wd450: wd400: wd190: wd181: wd501: ldq disk_write*4096,du write command in Q tra rwi_common join common code " rwi_common: stx2 rwix2 Save x regs. " Set read/write command and device I.D. stcq rwilist+2,40 Set device command in IDCW. qrl 30 Save it for printing error messages. stq rwicmd ldq =a**** default subsystem name lxl7 0,2* get device type and config ptr anx7 =o777760,du leave only config ptr tze *+2 if none, use default ldq com|DISK_cd.sub,7 get subsystem name from config card stq rwi_sub_name save it lxl7 0,2* get device type into x7 anx7 =o17,du mask device type code ldq fs_dev.dev_type_names-1,7 Save name of disk device for err msg. stq rwi_disk_name " Set device code and sector address. alr 36-12 Store sector addr. for i/o in seek data word. ora rwiti OR in the track indicators sta rwiseekaddr ldq 0,2* Get the device info.. channel, etc stbq rwipcw+1,40 Put channel no in the PCW qrl 9 Get to DU stcq rwichanno,70 Save for check_status call. qrl 9 Isolate device number stbq rwidevno,04 Save it for printing error messages. qls 12 Shift to device address position. stcq rwichanno,04 Needed for xio_wait call. qls 12 Place the device # in all IDCW's used by this routine. stcq rwilist,20 Seek IDCW stcq rwilist+2,20 Read/Write IDCW stcq rwipcw,20 Set device # in PCW, too, for CP channel. stcq rwirestore,20 Restore IDCW " " Set core addresses in DCW's. ldq 1,2 Get the addr. in seg|offset form. " Convert it to absolute form. stbq *+1,64 (Store address and bit 29.) absa 0|0 **** THIS INSTRUCTION GETS MODIFIED **** alr 36-12 Position address extension. stca rwilist+2,10 Set extension in IDCW. als 18 Low-order part of address in AU. ldx7 rwiseekaddr Get sector count in X7. anx7 =o777700,du Mask to get word count. eax6 0 X6 is DCW list index. ora =o10000,dl Insert IOTP bit. rwibll: sta rwilist+3,6 Store IOTP DCW. cmpx7 4096,du Tally > 4096 ? tmoz rwiblx If not, tra. adla 4096,du Bump DCW address. eax6 1,6 Bump DCW list index. eax7 -4096,7 Decrement remaining tally. tra rwibll Go back and set another DCW. rwiblx: anx7 =o7777,du Mask tally. (Needed if tally = 4096.) sxl7 rwilist+3,6 Store final tally and clear IOTP bit. absa rwiseekaddr Place the absolute addr. of the seek data word in a als 6 data DCW. stca rwilist+1,70 " " Perform the I/O. stz rwitrys Zero the error retry count. tsx2 connect_iom Start i/o. zero rwipcw,rwilist Indicate where the PCW's and DCW's for this i/o are. rwi_retry: "If i/o errors occur, the i/o error handler loops " to here after restarting the i/o. tsx2 check_status Is the i/o done? arg rwichanno (Indicate which channel we are concerned about.) zero 0 No, wait for status to arrive. tra rwierr Process all i/o errors. This instr. is " skipped if there were none. canq =o707777,dl Is the tally residue ok? tnz rwierr No, then gripe about the bad tally residue. rwiend: "Normal exit code for this routine. rwix2: eax2 * Restore the x regs. tra 3,2 " rwierr: staq rwistat store status for printout szn disk_brief Should message be suppressed? tnz rwiskiper If so, bypass erpt call. lda rwichanno get channel and IOM number arl 18 in AL stca rwichan,01 save channel for printing arl 6 right-justify IOM number adla =h a make into letter sta rwiiom and save tsx2 erpt print disk ID acc 'error on ^a ^g ^o ^d (^a):' arg rwi_disk_name arg rwiiom arg rwichan arg rwidevno arg rwi_sub_name lda rwilist+3 get core addr arl 18 sta rwiaddr lda rwiseekaddr get storage unit and sector ana =o7777777 sta rwisect tsx2 erpt Print error message. acc ' cmd=^o, s=^o, addr=^o, stat=^w ^w' arg rwicmd arg rwisect arg rwiaddr arg rwistat arg rwistat+1 tsx2 xio_wait read detailed status vfd 18/rwidetail,12/2 zero rwichanno,disk_status tra rwiskiper lda rwidetail convert to hex tsx2 hexwd sta rwihex ldaq rwidetail lls 24 tsx2 hexwd sta rwihex+1 ldq rwidetail+1 lls 48 tsx2 hexwd ora =h0000 " sta rwihex+2 tsx2 erpt announce detailed status acc 'detailed status: ^g^g^g.' arg rwihex arg rwihex+1 arg rwihex+2 rwiskiper: aos rwitrys Count the no. of times the i/o was retried. lda rwitrys Has the maximum no. of retries been done? cmpa =4,dl tpl rwifatal Yes, go to process fatal error condition. tsx2 connect_iom Restart the i/o, which will cause a restore " (recalibration of the seek arm) to be done. zero rwipcw,rwi_reseek tra rwi_retry Go to rest of retry loop. " Process fatal errors. rwifatal: ldx2 rwix2 lda rwistat so dump will print something xec 2,2 tra rwiend " rwiti: oct 0 track indicators rwicmd: oct 0 rwidevno: oct 0 rwichan: oct 0 rwiiom: oct 0 rwisect: oct 0 rwiaddr: oct 0 even rwistat: oct 0,0 rwidetail:bss ,2 rwitrys: oct 0 rwichanno: oct 0 rwihex: bss ,3 rwiseekaddr: oct 0 disk_brief: oct 0 Non-zero to suppress error messages. bool disk_read,25 Table of DCW op-codes. bool disk_write,31 bool disk_seek,34 bool disk_restore,42 bool disk_status,22 even " The following PCW will perform a Reset Status for a Common Peripheral Channel. " It will then proceed with the DCW list. " This PCW will be ignored by a Peripheral Subsystem Interface Adapter (PSIA). rwipcw: vfd o6/40,6/0,6/0,3/7,3/2,o6/2,6/1 vfd 9/0 rwi_reseek: " The disk is reconnected here after an error occurs. rwirestore: vfd o6/disk_restore,6/0,6/0,3/7,3/2,6/2,6/0 Restore IDCW. rwilist: " The disk is normally connected here. vfd 6/disk_seek,6/0,6/0,3/7,3/2,6/0,6/0 Seek IDCW vfd 18/rwiseekaddr,6/0,12/1 IOTD to transmit the seek address. vfd 6/0,6/0,6/0,3/7,3/4,6/0,6/0 Read or write IDCW. bss ,8 DCW list to transmit the data. rwi_disk_name: aci '****' Name of the device currently being used. rwi_sub_name: aci '****' Name of subsystem currently being used. " End of include file ...... rwdisk.incl.alm " " " ----------------------------------------------------------- " " " " Historical Background " " This edition of the Multics software materials and documentation is provided and donated " to Massachusetts Institute of Technology by Group Bull including Bull HN Information Systems Inc. " as a contribution to computer science knowledge. " This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, " Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell Bull Inc., Groupe Bull " and Bull HN Information Systems Inc. to the development of this operating system. " Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), " renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership " of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for " managing computer hardware properly and for executing programs. Many subsequent operating systems " incorporated Multics principles. " Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., " as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . " " ----------------------------------------------------------- " " Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without " fee is hereby granted,provided that the below copyright notice and historical background appear in all copies " and that both the copyright notice and historical background and this permission notice appear in supporting " documentation, and that the names of MIT, HIS, Bull or Bull HN not be used in advertising or publicity pertaining " to distribution of the programs without specific prior written permission. " Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. " Copyright 2006 by Bull HN Information Systems Inc. " Copyright 2006 by Bull SAS " All Rights Reserved " "