; Test invalid secondary aborts for the HP-IB 7970E. ; Load DUS from the tape. Give any parameter to trace execution. ; Set up the log(s). set -N console log=TAPEABORT.log if "%1" != "" set -N console debug=TAPEABORT-debug.log ; Establish the initial environment. echo echo Configuring the simulation environment. set CPU S58,4096K,REALTIME set CPU STOP=COLDLOAD set CPP FILTER=1 set DC DISABLED set GIC COUNT=2 set GICA CHANNEL=9 set MA COUNT=2 set MAB CHANNEL=11 set console DEL=177 break delay 30 milliseconds echo echo echo ------------------------- echo Diagnostic Utility System echo ------------------------- echo echo Loading DUS. ; Cold load the DUS tape from channel 9 device 0. attach -e -r MAA0 DUS_Rev-2913.tape load ; Load and start the diagnostic. echo echo Starting the diagnostic. attach -n MAB0 TAPEABORT.tape go until "\r\n:" ; reply "AID\r" ; Test these types of aborts: ; ; - Write Record + Read Data ; - Write Record + invalid talk secondary ; - Write Record + invalid listen secondary ; - Write Record + Write Data Burst + Read Data Burst ; - Read Record + Write Data ; - Read Record + invalid talk secondary ; - Read Record + invalid listen secondary ; - Read Record + Read Data Burst + Write Data Burst ; ; CC(0) = 01--H (Select Unit 0 opcode) ; CC(1) = 05--H (Write Record opcode) ; CC(2) = 08--H (Read Record opcode) ; CC(3) = 0D--H (Rewind Opcode) ; CC(4) = 01--H (End / Clear Poll) ; Line 10 go until "> " ; reply "DB CC,10,0\r" go until "> " ; reply "DB DD,256,!1111\r" go until "> " ; reply "DB SS,36,0\r" go until "> " ; reply "ASSIGN CC(0),!100,!500,!800,!D00,!100\r" go until "> " ; reply "ASSIGN DD(0),!2222\r" go until "> " ; reply "ASSIGN DD(32),!3333\r" go until "> " ; reply "ASSIGN DD(64),!4444\r" go until "> " ; reply "ASSIGN DD(96),!5555\r" go until "> " ; reply "ASSIGN DD(128),!6666\r" go until "> " ; reply "LET CHANNEL:=11,DEVICE:=0\r" ; Reset the tape drive. ; ; Line 110 go until "> " ; reply "BSIO ZZ\r" go until "> " ; reply "CHP !94 . DEVICE CLEAR\r" go until "> " ; reply "WAIT\r" go until "> " ; reply "WR 1,CC(0),1 . SELECT UNIT 0\r" go until "> " ; reply "WAIT\r" go until "> " ; reply "DSJ 170\r" ; Line 170 go until "> " ; reply "WR 1,CC(3),1 . REWIND\r" go until "> " ; reply "WAIT\r" go until "> " ; reply "DSJ 200\r" ; Line 200 go until "> " ; reply "RR 1,SS(0),3 . READ STATUS\r" go until "> " ; reply "IN H\r" go until "> " ; reply "ESIO\r" ; Write the initial records. ; ; Line 230 go until "> " ; reply "BSIO YY\r" go until "> " ; reply "WR 1,CC(1),1 . WRITE RECORD\r" go until "> " ; reply "WAIT\r" go until "> " ; reply "DSJ 270\r" ; Line 270 go until "> " ; reply "WR 0,DD(0),150 . WRITE DATA RECORD\r" go until "> " ; reply "WR 7,CC(4),1 . END / CLEAR POLL\r" go until "> " ; reply "WAIT . WRITE COMPLETE\r" go until "> " ; reply "DSJ 310\r" ; Line 310 go until "> " ; reply "RR 1,SS(2),3 . READ STATUS\r" go until "> " ; reply "IN H\r" go until "> " ; reply "ESIO\r" ; Test write failures. ; ; Line 340 go until "> " ; reply "BSIO XX\r" ; ; Write Record + Read Data ; ; Line 350 go until "> " ; reply "WR 1,CC(1),1 . WRITE RECORD\r" go until "> " ; reply "WAIT\r" go until "> " ; reply "DSJ 380\r" ; Line 380 go until "> " ; reply "RR 0,DD(0),150 . READ DATA\r" go until "> " ; reply "JUMP 410 . TRANSFER COMPLETE\r" go until "> " ; reply "JUMP 360 . TRANSFER CONTINUES\r" ; Line 410 go until "> " ; reply "WR 7,CC(4),1 . END / CLEAR POLL\r" go until "> " ; reply "WAIT . WRITE COMPLETE\r" go until "> " ; reply "DSJ 440\r" ; Line 440 go until "> " ; reply "RR 1,SS(8),3 . READ STATUS\r" ; ; ; Write Record + invalid talk secondary ; ; Line 450 go until "> " ; reply "WR 1,CC(1),1 . WRITE RECORD\r" go until "> " ; reply "WAIT\r" go until "> " ; reply "DSJ 480\r" ; Line 480 go until "> " ; reply "RR 3,DD(0),150 . INVALID TALK SECONDARY\r" go until "> " ; reply "JUMP 510 . TRANSFER COMPLETE\r" go until "> " ; reply "JUMP 460 . TRANSFER CONTINUES\r" ; Line 510 go until "> " ; reply "WR 7,CC(4),1 . END / CLEAR POLL\r" go until "> " ; reply "WAIT . WRITE COMPLETE\r" go until "> " ; reply "DSJ 540\r" ; Line 540 go until "> " ; reply "RR 1,SS(10),3 . READ STATUS\r" ; ; ; Write Record + invalid listen secondary ; ; Line 550 go until "> " ; reply "WR 1,CC(1),1 . WRITE RECORD\r" go until "> " ; reply "WAIT\r" go until "> " ; reply "DSJ 580\r" ; Line 580 go until "> " ; reply "WR 3,DD(0),150 . INVALID LISTEN SECONDARY\r" go until "> " ; reply "JUMP 610 . TRANSFER COMPLETE\r" go until "> " ; reply "JUMP 560 . TRANSFER CONTINUES\r" ; Line 610 go until "> " ; reply "WR 7,CC(4),1 . END / CLEAR POLL\r" go until "> " ; reply "WAIT . WRITE COMPLETE\r" go until "> " ; reply "DSJ 640\r" ; Line 640 go until "> " ; reply "RR 1,SS(12),3 . READ STATUS\r" ; ; ; Write Burst + Write Data + Read Data ; ; Line 650 go until "> " ; reply "WR 1,CC(1),1 . WRITE RECORD\r" go until "> " ; reply "WAIT\r" go until "> " ; reply "DSJ 680\r" ; Line 680 go until "> " ; reply "WB 0,DD(0),150,64 . WRITE DATA BURST\r" go until "> " ; reply "JUMP 760 . TRANSFER COMPLETE\r" go until "> " ; reply "JUMP 710 . TRANSFER CONTINUES\r" ; Line 710 go until "> " ; reply "WAIT\r" go until "> " ; reply "DSJ 730\r" ; Line 730 go until "> " ; reply "RB 0,DD(32),86,64 . READ DATA BURST\r" go until "> " ; reply "JUMP 760 . TRANSFER COMPLETE\r" go until "> " ; reply "JUMP 710 . TRANSFER CONTINUES\r" ; Line 760 go until "> " ; reply "WR 7,CC(4),1 . END / CLEAR POLL\r" go until "> " ; reply "WAIT . WRITE COMPLETE\r" go until "> " ; reply "DSJ 790\r" ; Line 790 go until "> " ; reply "RR 1,SS(14),3 . READ STATUS\r" go until "> " ; reply "IN H\r" go until "> " ; reply "ESIO\r" ; Test read error recovery. ; ; Line 820 go until "> " ; reply "BSIO WW\r" ; ; Rewind the tape. ; ; Line 830 go until "> " ; reply "WR 1,CC(3),1 . REWIND\r" go until "> " ; reply "WAIT\r" go until "> " ; reply "DSJ 860\r" ; Line 860 go until "> " ; reply "RR 1,SS(16),3 . READ STATUS\r" ; Read Record + Write Data ; ; Line 870 go until "> " ; reply "WR 1,CC(2),1 . READ RECORD\r" go until "> " ; reply "WAIT\r" go until "> " ; reply "DSJ 900\r" ; Line 900 go until "> " ; reply "WR 0,DD(0),150 . WRITE DATA\r" go until "> " ; reply "JUMP 930 . TRANSFER COMPLETE\r" go until "> " ; reply "JUMP 880 . TRANSFER CONTINUES\r" ; Line 930 go until "> " ; reply "WR 7,CC(4),1 . END / CLEAR POLL\r" go until "> " ; reply "WAIT . WRITE COMPLETE\r" go until "> " ; reply "DSJ 960\r" ; Line 960 go until "> " ; reply "RR 1,SS(24),3 . READ STATUS\r" ; Read Record + invalid talk secondary ; ; Line 970 go until "> " ; reply "WR 1,CC(2),1 . READ RECORD\r" go until "> " ; reply "WAIT\r" go until "> " ; reply "DSJ 1000\r" ; Line 1000 go until ">1" ; reply "RR 3,DD(0),150 . INVALID TALK SECONDARY\r" go until ">1" ; reply "JUMP 1030 . TRANSFER COMPLETE\r" go until ">1" ; reply "JUMP 980 . TRANSFER CONTINUES\r" ; Line 1030 go until ">1" ; reply "WR 7,CC(4),1 . END / CLEAR POLL\r" go until ">1" ; reply "WAIT . WRITE COMPLETE\r" go until ">1" ; reply "DSJ 1060\r" ; Line 1060 go until ">1" ; reply "RR 1,SS(26),3 . READ STATUS\r" ; Read Record + invalid listen secondary ; ; Line 1070 go until ">1" ; reply "WR 1,CC(2),1 . READ RECORD\r" go until ">1" ; reply "WAIT\r" go until ">1" ; reply "DSJ 1100\r" ; Line 1100 go until ">1" ; reply "WR 3,DD(0),150 . INVALID LISTEN SECONDARY\r" go until ">1" ; reply "JUMP 1130 . TRANSFER COMPLETE\r" go until ">1" ; reply "JUMP 1080 . TRANSFER CONTINUES\r" ; Line 1130 go until ">1" ; reply "WR 7,CC(4),1 . END / CLEAR POLL\r" go until ">1" ; reply "WAIT . WRITE COMPLETE\r" go until ">1" ; reply "DSJ 1160\r" ; Line 1160 go until ">1" ; reply "RR 1,SS(28),3 . READ STATUS\r" ; Read Burst + Read Data + Write Data ; ; Line 1170 go until ">1" ; reply "WR 1,CC(2),1 . READ RECORD\r" go until ">1" ; reply "WAIT\r" go until ">1" ; reply "DSJ 1200\r" ; Line 1200 go until ">1" ; reply "RB 0,DD(0),150,64 . READ DATA BURST\r" go until ">1" ; reply "JUMP 1280 . TRANSFER COMPLETE\r" go until ">1" ; reply "JUMP 1230 . TRANSFER CONTINUES\r" ; Line 1230 go until ">1" ; reply "WAIT\r" go until ">1" ; reply "DSJ 1250\r" ; Line 1250 go until ">1" ; reply "WB 0,DD(32),86,64 . WRITE DATA BURST\r" go until ">1" ; reply "JUMP 1280 . TRANSFER COMPLETE\r" go until ">1" ; reply "JUMP 1230 . TRANSFER CONTINUES\r" ; Line 1280 go until ">1" ; reply "WR 7,CC(4),1 . END / CLEAR POLL\r" go until ">1" ; reply "WAIT . WRITE COMPLETE\r" go until ">1" ; reply "DSJ 1310\r" ; Line 1310 go until ">1" ; reply "RR 1,SS(30),3 . READ STATUS\r" ; Bad talk secondary with controller idle. ; ; Line 1320 go until ">1" ; reply "RR 4,CC(0),1 . INVALID TALK SECONDARY\r" go until ">1" ; reply "WAIT\r" go until ">1" ; reply "DSJ 1350\r" ; Line 1350 go until ">1" ; reply "RR 1,SS(32),3 . READ STATUS\r" ; Bad listen secondary with controller idle. ; ; Line 1360 go until ">1" ; reply "WR 5,CC(0),1 . INVALID LISTEN SECONDARY\r" go until ">1" ; reply "WAIT\r" go until ">1" ; reply "DSJ 1390\r" ; Line 1390 go until ">1" ; reply "RR 1,SS(34),3 . READ STATUS\r" ; End of the diagnostic. ; ; Line 1400 go until ">1" ; reply "IN H\r" go until ">1" ; reply "ESIO\r" ; Line 1420 go until ">1" ; reply "RSIO ZZ\r" go until ">1" ; reply "FOR I:=1 TO 4\r" go until ">1" ; reply "RSIO YY\r" go until ">1" ; reply "NEXT 1430\r" ; Line 1460 go until ">1" ; reply "RSIO XX\r" go until ">1" ; reply "RSIO WW\r" go until ">1" ; reply "END\r" go until ">1" set mab debug set gicb debug=xfer ; set cpp debug reply "RUN\r" go until "\r\n>1" ; reply "LIST !B,SS\r" ; Exit go until "\r\n>1" ; reply "EXIT\r" go until "?" ; reply "YES\r" go until "\r\n:" exit