100 / ASSEMBLY INSTRUCTIONS: 110 120 / CHANGE "DEVCODE" TO PROPER DEVICE CODE AS NECESSARY (DEFAULT IS 70). 130 140 / CHANGE "GROUP" TO "A&37 THROUGH "Z&37 AS NECESSARY TO ADDRESS THE PROPER GROUP 150 / OF HANDLERS (DEFAULT IS "A&37). 160 170 / CHANGE "IDNUM" TO 0 THROUGH 7 AS NECESSARY TO ADDRESS THE PROPER SCSI PORT 180 / ADDRESS (DEFAULT IS 0). 190 200 / CHANGE "HSET" TO 0 OR 1 AS NECESSARY TO ADDRESS THE PROPER HALF OF THE 210 / SELECTED GROUP WITH THE PROPER HANDLER SET (DEFAULT IS 0). 220 230 / CHANGE "LOGUNIT" TO 0 THROUGH 7 AS NECESSARY TO ADDRESS THE PROPER LOGICAL 240 / UNIT (DEFAULT IS 0). 250 260 / CHANGE "OFFSET" TO 0 OR 1 AS NECESSARY (DEFAULT IS 1; OFFSET=1 DEFINES A 270 / RESERVED BOOT AREA ON THE DISK FOR MENU-8, ETC.). 280 290 / MAY BE ASSEMBLED WITH '/J' (OS/8 PAL8 '/F') SWITCH SET. 300 EJECT 310 PAGE /START ON A NEW PAGE 320 330 HERE= . /WHERE WE ARE NOW 340 350 / DEFINITIONS. 360 370 DMA= 4000 /DMA INDICATOR 380 IFNDEF GROUP /HANDLER GROUP 390 IFNDEF HSET /HANDLER SET 400 IFNDEF IDNUM /SCSI ID 410 IFNDEF LOGUNIT /LOGICAL UNIT 420 NL4000= CLA CLL CML RAR /LOAD AC WITH 4000 430 IFNDEF OFFSET /DEVICE OFFSET (FOR MENU-8) 440 REVISIO="A&77 /REVISION OF HANDLER 450 XLIST OFF 460 470 IFNDEF OFF 480 IFNDEF ON 490 500 IFNDEF WINHND 510 520 XLIST ON 530 540 / MDC8 IOT DEFINITIONS. 550 560 IFNDEF DEVCODE /USES 670X BY DEFAULT 570 580 DSEI= DEVCODE^10+6000 /INTERRUPT ENABLE/DISABLE PER AC[11] 590 DSSF= DEVCODE^10+6001 /SKIP ON DONE FLAG 600 DSCF= DEVCODE^10+6002 /CLEAR DONE FLAG 610 DSHI= DEVCODE^10+6003 /LOAD HIGH-ORDER COMMAND ADDRESS 620 DSGO= DEVCODE^10+6004 /LOAD LOW-ORDER COMMAND AND GO 630 / = DEVCODE^10+6005 /UNUSED 640 DSRS= DEVCODE^10+6006 /READ STATUS 650 DSIM= DEVCODE^10+6007 /INTERFACE MAINTENANCE INSTRUCTION 660 670 / DEVICE NAME DEFINITIONS. 680 690 IFZERO IDNUM < 700 710 CH1= "W&177 /FIRST DEVICE LETTER 720 730 > 740 750 IFNZRO IDNUM < 760 770 CH1= "C+IDNUM&177 /FIRST DEVICE LETTER 780 790 > 800 810 CH2= GROUP+100 /SECOND DEVICE LETTER 820 CH3= LOGUNIT^2+HSET+"A&177 /THIRD DEVICE LETTER 830 EJECT 840 / DEVICE HANDLER HEADER BLOCK. 850 860 *CH1; *CH2; *CH3 /GROUP NAME 870 *-1 /GROUP COUNT 880 *CH1; *CH2; *CH3 /DEVICE NAME 890 *WINHND&177 /ENTRY POINT 900 *0000-1 /HIGHEST BLOCK 910 *REVISION /REVISION OF HANDLER 920 EJECT 930 *HERE /RESTORE ORIGIN 940 950 / ENTRY POINT FOR HANDLER. 960 970 WINHND, .-. /ACTUAL HANDLER ENTRY POINT 980 CLA /CLEAN UP 990 TAD I WINHND /GET ARGUMENT POINTER 1000 DCA WINEXIT /STASH IT 1010 TAD I WINEXIT /GET THE TRANSFER ADDRESS 1020 DCA TRADDR /STASH IT 1030 ISZ WINEXIT /BUMP TO FUNCTION WORD 1040 TAD I WINEXIT /GET FUNCTION WORD 1050 RTR;RAR /MOVE DOWN AND 1060 AND (7) /ISOLATE FIELD BITS 1070 DCA TRFLD /STORE (BANK AND) FIELD 1080 TAD I WINEXIT /GET FUNCTION WORD AGAIN 1090 AND (3700) /ISOLATE PAGE BITS 1100 SNA /SKIP IF ANY SET 1110 NL4000 /ELSE USE MAXIMUM AMOUNT 1120 RTR;RTR;RTR /MOVE PAGE COUNT DOWN 1130 DCA SCTCNT /STASH SECTOR COUNT 1140 TAD I WINEXIT /GET FUNCTION WORD AGAIN 1150 AND (7) /ISOLATE UNIT BITS 1160 DCA WAIT /SAVE FOR LATER 1170 NL4000 /SET READ/WRITE MASK 1180 AND I WINEXIT /GET READ/WRITE BIT 1190 CLL IAC RTL;RAL /10 IF READING, 12 IF WRITING 1200 DCA RWCOM /STASH COMMAND 1210 ISZ WINEXIT /BUMP TO BLOCK NUMBER 1220 TAD I WINEXIT /GET THE BLOCK NUMBER 1230 TAD WOFF /ADD ON OFFSET 1240 DCA SECTLO /STORE AS LOW-ORDER ADDRESS 1250 RAL /GET POTENTIAL CARRY OUT 1260 TAD WAIT /ADD ON UNIT BITS