; Test the HP-IB line printer. ; ; Load DUS from the tape. Give any parameter to trace execution. ; Set up the log(s). set -N console log=LPA.log if "%1" != "" set -N console debug=LPA-debug.log ; Establish the initial environment. echo echo Configuring the simulation environment. set CPU S58,4096K,REALTIME set CPU STOP=COLDLOAD set GIC COUNT=2 set GICA CHANNEL=9 set GICB CHANNEL=11 set DC DISABLED set LPA CHANNEL=11,BUS=0 set ADCC0 NOCAPSLOCK set console DEL=177 break delay 50 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 MA0 DUS_Rev-2913.tape load ; Load and start the diagnostic. set CPP FILTER=1;9 set CPP DEBUG=CMD set GICB DEBUG=XFER set LPA DEBUG attach -N LPA printer.txt echo echo Starting the diagnostic. go until "\r\n:" ; reply "AID\r" ; CC(0) = 8082H (Enable Escapes / Disable Escapes) ; CC(1) = 0300H (Initiate Self Test opcode) ; ; Tests: ; Print_Data (0) ; Set_Escape ; Amigo_Clear ; Write_Loopback (30) ; Initiate_Self_Test ; Read_Status ; Device_Specified_Jump ; Read_Loopback (30) ; Read_Self_Test ; Amigo_Identify ; Line 10 go until '\r\n>' ; reply 'DB CC,10,0\r' go until '\r\n>' ; reply 'DB RR,128,!FF\r' go until '\r\n>' ; reply 'DB WW,128\r' go until '\r\n>' ; reply 'DB XX,32,0\r' go until '\r\n>' ; reply 'DB &DD,128,"HELLO THERE, BOYS!"\r' go until '\r\n>' ; reply 'DB &UU,8,"~&l 10 U"\r' go until '\r\n>' ; reply 'DB &VV,8,"~&l 1 V"\r' go until '\r\n>' ; reply 'ASSIGN CC(0),!8082,!300\r' go until '\r\n>' ; reply 'ASSIGN WW(0),(32),!1,!203,!405,!607\r' go until '\r\n>' ; reply 'LET &UU(0):=27,&VV(0):=27\r' go until '\r\n>' ; reply 'LET CHANNEL:=11,DEVICE:=0\r' ; Line 120 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'BSIO ZZ\r' go until '\r\n>' ; reply 'IDENT X .IDENTIFY\r' go until '\r\n>' ; reply 'RR 14,CC(9),1 .READ STATUS\r' go until '\r\n>' ; reply 'CHP !94 .DEVICE CLEAR\r' go until '\r\n>' ; reply 'WR 2,CC(0),1 .ENABLE ESCAPES\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 210,210,210,210;X\r' ; Line 200 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'WR 2,CC(0),1,,R .DISABLE ESCAPES\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 250,250,250;X\r' ; Line 240 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'CLEAR 1 .AMIGO CLEAR\r' go until '\r\n>' ; reply 'RR 14,CC(9),1 .READ STATUS\r' go until '\r\n>' ; reply 'WR 31,CC(1),1 .INITIATE SELF-TEST\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 310,310;X\r' ; Line 300 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'RR 31,CC(1),1,,R .READ SELF-TEST\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 350;X\r' ; Line 340 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'WB 0,&DD(0),18,128 .PRINT DATA\r' go until '\r\n>' ; reply 'JUMP 420\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 400;X\r' ; Line 390 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'JUMP 350\r' ; Line 410 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 450;X\r' ; Line 440 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'WR 2,CC(0),1 .ENABLE ESCAPES\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 490;X\r' ; Line 480 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'WR 0,&UU(0),8 .SLEW 10 LINES\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 530;X\r' ; Line 520 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'WR 0,&VV(0),8 .SLEW TO VFU 1 (TOF)\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 570;X\r' ; Line 560 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'WR 30,WW(0),256 .WRITE LOOPBACK\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 610;X\r' ; Line 600 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'RR 30,RR(0),256 .READ LOOPBACK\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 650;X\r' ; Line 640 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'WR 1,WW(0),32 .BAD WRITE SECONDARY\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'RR 14,CC(9),1 .READ STATUS\r' ; Line 680 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'RR 3,XX(0),32 .BAD READ SECONDARY\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'RR 14,CC(9),1 .READ STATUS\r' ; Line 720 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'CHP !94 .DEVICE CLEAR\r' go until '\r\n>' ; reply 'IN H\r' go until '\r\n>' ; reply 'RSIO \r' ; Line 760 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'CB WW(0),RR(0),128\r' go until '\r\n>' ; reply 'PRINT INDEX\r' ; Line 790 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'BSIO ZZ\r' go until '\r\n>' ; reply 'WR 2,CC(0),1 .ENABLE ESCAPES\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 840;X\r' go until '\r\n>' ; reply 'WB 0,&DD(0),18,9 .PRINT DATA\r' go until '\r\n>' ; reply 'JUMP 900\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 880;X\r' go until '\r\n>' ; reply 'JUMP 840\r' ; Line 890 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'WAIT \r' go until '\r\n>' ; reply 'DSJ 920;X\r' go until '\r\n>' ; reply 'WR 0,&VV(0),8 .SLEW TO VFU 1 (TOF)\r' go until '\r\n>' ; reply 'IN H\r' go until '\r\n>' ; reply 'RSIO \r' ; Line 950 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'BSIO ZZ\r' go until '\r\n>' ; reply 'WR 0,&DD(0),18 .PRINT DATA\r' go until '\r\n>' ; reply 'RR 14,CC(9),1 .READ STATUS\r' go until '\r\n>' ; reply 'WR 0,&VV(0),8 .SLEW TO VFU 1 (TOF)\r' go until '\r\n>' ; reply 'RR 14,CC(9),1 .READ STATUS\r' go until '\r\n>' ; reply 'IN H\r' go until '\r\n>' ; reply 'ESIO \r' ; Line 1030 go until '\r\n>' ; reply '.\r' go until '\r\n>' ; reply 'PRINT "AT PAUSE"\r' go until '\r\n>' ; reply 'PAUSE \r' go until '\r\n>' ; reply 'LET &VV(5):="3"\r' go until '\r\n>' ; reply 'FOR I:=1 UNTIL 4\r' go until '\r\n>' ; reply 'RSIO ZZ\r' go until '\r\n>' ; reply 'NEXT 1070\r' go until '\r\n>' ; reply 'END \r' ; Run until the program pauses. go until "\r\n>" ; reply "RUN\r" go until "\r\n>" ; set lpa offline ; reply "GO\r" go until "\r\n>" ; set lpa online ; Exit if "%1" == "" go if "%1" == "" return reply "EXIT\r" go until "?" ; reply "YES\r" go until "\r\n:" exit