* PROGRAM TO TEST THE DP-4651 MOVING HEAD DISK DRIVER * * SEE FOR HARDWARE AND PROGRAMMING DETAILS THE HONEYWELL SERIES 16 MANUAL: * MOVING-HEAD DISK, OPTIONS 4613,4651 AND 4720 * PROGRAMMERS' REFERENCE MANUAL * DOC NUMBER: CA38 / 701300725228 * * AFTER STARTING THE TEST (AT '2000), THE PROGRAM MUST STOP A ADDRESS '2005 * THE STOP INDICATES AN ERROR, WHICH IS OK IN THIS TEST BECAUSE IT SHOULD * INDICATE THAT ONLY UNIT 0 IS AVAILABLE AND THE OTHER 3 UNITS ARE NOT * AVAILABLE (A-REG SHOULD CONTAIN THE VALUE '250) * THEN AFTER CONTINUE: * 1ST 100 BLOCKS ARE WRITTEN, STARTING WITH BLOCK 0. * AFTER A BLOCK IS WRITTEN, THE BLOCK NUMBER IS INCREMENTED WITH 4. * AFTER THE 100 BLOCKS BEEN WRITTEN, A LAST BLOCK IS WRITTEN AT THE END OF THE * DISK. * THE 2ND STEP IS TO READ THE WRITTEN BLOCKS BACK AND DISPLAY THE CONTENT: * STRING '1234567890' BLOCK 00 .. BLOCK 99. * DURING THE 3RD STEP SINGLE BLOCKS ARE READ: * 1) THE LAST BLOCK => SHOULD DISPLAY: LAST BLOCK * 2) 2 * BLOCK 64 => SHOULD DISPLAY TWO TIMES: BLOCK 16 * 3) BLOCK '350 => SHOULD CONTAIN NOTHING SO PRINT AN EMPTY LINE * 4) READ BLOCK 2500 => SHOULD CONTAIN: BLOCK 58 * 5) READ BLOCK 5500 => ERROR, STOP AT '2145, BLOCK OUT OFF RANGE, A='1002 * 6) READ FROM UNIT 1 => ERROR, STOP AT '2157, UNIT NOT OPERABLE, A='42002 * **** ***** ***************** ORG '2000 STR EQU * * INIT THE DRIVER CALL DP$I OCT 0 RESULT LDA *-1 SZE HLT MUST STOP HERE WITH '250 IN A-REG * THE STOP INDICATES THAT UNIT 0 IS AVAILABLE (BIT 15/16 = 0) * THE OTHER 3 UNITS ARE NOT AVAILABLE * * WRITE 100 BLOCKS LDA =-100 STA CNT LDA NULL STA BLK * WRITE A BLOCK WB CALL DP$W DEC 0 UNIT BN DEC 0 LOGICAL BLOCK NUMBER DAC WBUF 128 BYTES (512 BYTES) LONG HLT ERROR * PREPARE WRITING NEXT BLOCK IRS BLK LDA BLK OVERFLOW OF LAST DIGIT? CAL SUB ='272 SZE JMP FBN NO LDA BLK CAR ADD ='400 ERA ='260 STA BLK * FILL BLOCK NUMBER FBN LDA BN ADD =4 STA BN * IRS CNT JMP WB AND WRITE * WRITE LAST BLOCK ON DISC CALL DP$W DEC 0 DEC 4799 DAC LBUF HLT * * READ THE BLOCKS LDA =-100 STA CNT RB JST NLCR CALL DP$R DEC 0 UNIT BN1 DEC 0 LOGICAL BLOCK NUMBER DAC RBUF HLT ERROR JST PSTR DAC RBUF LDA BN1 ADD =4 STA BN1 IRS CNT JMP RB * READ 2 * BLOCK 64 WHICH SHOULD SHOW 16/4 = BLOCK 16 JST NLCR CALL DP$R DEC 0 UNIT OCT 100 LOGICAL BLOCK NUMBER DAC RBUF HLT ERROR JST PSTR DAC RBUF JST NLCR CALL DP$R DEC 0 UNIT OCT 100 LOGICAL BLOCK NUMBER DAC RBUF HLT ERROR JST PSTR DAC RBUF JST NLCR * READ THE LAST BLOCK CALL DP$R DEC 0 UNIT DEC 4799 LOGICAL BLOCK NUMBER DAC RBUF HLT ERROR JST PSTR DAC RBUF JST NLCR * READ BLOCK '350 => SHOULD CONTAIN NOTHING SO PRINT AN EMPTY LINE JST NLCR CALL DP$R DEC 0 UNIT OCT 350 LOGICAL BLOCK NUMBER DAC RBUF HLT ERROR JST PSTR DAC RBUF * 3 OTHER TESTS: * READ BLOCK 2500 => SHOULD CONTAIN: BLOCK 58 JST NLCR LDA ONE JST ASRO CALL DP$R ERROR!? DEC 0 UNIT DEC 2500 LOGICAL BLOCK NUMBER DAC RBUF HLT ERROR JST PSTR DAC RBUF JST NLCR * READ BLOCK 5500 => ERROR, STOP, BLOCK OUT OF RANGE (A='1002) LDA TWO JST ASRO CALL DP$R ERROR!? DEC 0 UNIT DEC 5500 LOGICAL BLOCK NUMBER DAC RBUF HLT ERROR JST PSTR DAC RBUF JST NLCR * READ FROM UNIT 1 => ERROR, STOP, UNIT NOT OPERABLE (A='42002) LDA THR JST ASRO CALL DP$R ERROR!? DEC 1 UNIT OCT 3500 LOGICAL BLOCK NUMBER DAC RBUF HLT ERROR JST PSTR DAC RBUF HLT STOP ONE BCI 1, 1 TWO BCI 1, 2 THR BCI 1, 3 * * PRINT STRING (NULL TERMINATED) PSTR DAC ** LDA* PSTR POINTER TO STRING STA PTR N LDA* PTR GET 2 CHARS SNZ JMP END STRING END ICA PRINT BYTE 1 JST ASRO ICA PRINT BYTE 2 JST ASRO IRS PTR JMP N END IRS PSTR RETURN JMP* PSTR PTR OCT 0 * POKT DAC ** STA SA LRL 16 LDA =-6 STA TEL LDA ='240 JST ASRO CRA LLL 1 JMP CONV OKT LLL 3 CONV ADD ='260 JST ASRO CRA IRS TEL JMP OKT LDA SA JMP* POKT SA OCT 0 TEL OCT 0 * ASRO DAC ** SKS '104 JMP *-1 OCP '104 OTA 4 JMP *-1 JMP* ASRO * NLCR DAC ** LDA ='106612 ICA JST ASRO ICA JST ASRO JMP* NLCR * CNT OCT 0 NULL BCI 1,00 * * WRITE BUFFER WBUF BCI 6,1234567890 BCI 3,BLOCK BLK BCI 1, BSZ 246 * * READ BUFFER RBUF BSZ 256 * * LAST LBUF BCI 5,LAST BLOCK BSZ 250 END