.TITLE DR11-W (RT11) SPFUN TEST ; ; THIS IS A TEST PROGRAM FOR THE 'SPFUN' REQUESTS TO THE CD ; DR11-W HANDLER. ----- ; ; .MCALL .LOOKUP,.READW,.WRITW,.FETCH,.SPFUN,.WAIT .MCALL .EXIT,.PRINT,.HRESET ; ERRBYT = 52 ; ; ; OFFSETS INTO THE READ/WRITE REQUEST'S CONTROL ; AND STATUS AREA ; B$PTC = 0 ;OFFSET TO PACKET TYPE CODE (PTC) B$MSGN = 2 ;OFFSET TO MESSAGE BLOCK NUMBER B$ERR = 4 ;OFFSET TO ERROR CODE RETURNED BY ; ; THE DRIVER B$WC = 6 ;OFFSET TO WORD COUNT RETURNED BY ; ; THE DRIVER ; ; ERROR REPORTING ; ; (1) IMMEDIATE ERROR RESPONCE IN BYTE 52 E52PTC = 11 ;INVALID PTC E52CHN = 2 ;CHANNEL IS NOT OPEN E52MNS = 3 ;MAXIMUM NUMBER OF OPEN SESSIONS EXCEEDED E52SPF = 4 ;NO SESSION OPEN FOR THIS PTC ; ; (ON FUNC.=376) E52SES = 5 ;NO SESSION OPEN FOR THIS PTC E52BLK = 6 ;INVALID BLOCK ADDRESS GIVEN E52WCN = 7 ;WORD COUNT IS 0 E52ISF = 10 ;INVALID SPFUN CODE ; ; (2) FINAL ERROR RESPONCE IN B$ERR EFNSUC = 1 ;SUCCESSFUL - MESSAGE RECEIVED EFNDTR = -10 ;DATA RECEIVED/XMITTED WAS TRUNCATED EFNPTC = -20 ;PTC REJECTED - RECEIVER HAS NO OPEN SESSION ; ; FOR THIS PTC EFNTIO = -30 ;READ/WRITE REQUEST TIMEOUT (OPTIONAL) EFNHER = -40 ;HARDWARE ERRORS EFNTMX = -50 ;TIMEOUT DURING MESSAGE XFER EFNWRR = -60 ;WRITE REQUEST REJECTED - THE OTHER PARTY ; ; HAS NO READ FOR THIS PTC EFNABO = -70 ;I/O KILLED (BY THE OTHER PARTY) ; ; WHILE IN PROCESS EFNABY = -100 ;I/O KILLED (BY YOURSELF) ; ; WHILE IN PROCESS ; ; .PAGE ; ; SPECIAL FUNCTION DEFINITIONS: ; SFOPNR = 377 ;OPEN 'READ' SESSION SFCLSR = 376 ;CLOSE 'READ' SESSION SFDFRT = 375 ;SET NEW DEFAULT REQUEST TIMEOUT SFSGNL = 374 ;SEND SIGNAL SFSYNC = 373 ;RECEIVE SIGNAL IN SYNC MODE ; ; ; START:: .FETCH #HSPACE,#CDNAME ;GET CD HANDLER BCS FERR ;CD NOT AVAILABLE CLR R3 ;CHAN. 0 .LOOKUP #AREA,R3,#CDNAME ;OPEN CHANNEL 0 BCS LKERR ;ERR. IN LOOKUP ; ; OPEN 'READ' SESSION ; MOV #SFOPNR,R5 ;SPFUN=OPEN 'READ' SESSION MOV #5,R2 ;NUMBER OF ITERATIONS MOV #1,R4 ;START WITH PTC=1 CHKSPF: MOV R4,PTC ;GET PTC MOV #AREA+14,R1 ;GET SIGNAL AREA .SPFUN #AREA,R3,R5,R1,,PTC ;OPEN 'READ' SESSION BCS REQERR ;ERR. IN SPFUN INC R4 ;GET NEXT PTC SOB R2,CHKSPF ;CONTINUE JSR PC,SGPNT ;PRINT SIGNAL AREA JSR PC,SGPNT ;PRINT SIGNAL AREA MOV #5,R4 ;NUMBER OF SIGNALS SENT RPTSPF: .SPFUN #AREA,R3,#SFSGNL,,R4,#BLK ;SEND SIGNAL BCS REQERR ;ERR. IN SPFUN .WAIT R3 BCS REQERR ;ERR. IN SPFUN MOV #10000,R2 ;DELAY COUNT DELAY: MOV R0,R0 ;NOP SOB R2,DELAY ; JSR PC,SGPNT ;PRINT SIGNAL AREA JSR PC,SGPNT ;PRINT SIGNAL AREA SOB R4,RPTSPF ;REPEAT .PRINT #TST$OK ;TEST IS OK .HRESET .EXIT ; REQERR: MOVB @#ERRBYT,R5 ;GET IMMEDIATE ERROR RESPONCE ADD #60,R5 ;CONVERT TO ASCII MOVB R5,ERCODE ;PREPARE ERROR MESSAGE .PRINT #ERMSG ;SHOW ERROR MESSAGE .HRESET .EXIT ; SGPNT: ;SIGNAL PRINTING SUBROUTINE MOV AREA+14,R2 ;GET SIGNAL (AND COUNT) VALUE ADD #30060,R2 ;CONVERT BOTH TO ASCII MOV R2,SGNL ;PREPARE SIGNAL MESSAGE .PRINT #SGMSG ;PRINT IT RTS PC ;RETURN ; FERR: .PRINT #FMSG ;SHOW 'FETCH ERROR' .EXIT LKERR: .PRINT #LMSG ;SHOW 'LOOKUP ERROR' .EXIT ; ; DATA STRUCTURES ; CDNAME: .RAD50 /CD / .WORD 0,0,0,0 ; AREA: .BLKW 10 ; ; SPFUN REQUEST DATA ; PTC: .WORD 0 ;CURRENT PTC REQUESTED ; BLK: .WORD 1,1,0,0 ;PTC, BLOCK #, CD ERROR RESP. BUFF: .ASCIZ /HI. DR11W MESSAGE 1/ .EVEN BB: .WORD 0,0,0,0,0 ; ; ; ERROR MESSAGES ; FMSG: .ASCIZ /NO DEVICE?/ LMSG: .ASCIZ /LOOKUP ERROR?/ SFMSG: .ASCIZ /SPFUN ERROR?/ ; ERMSG: .ASCII /IMMEDIATE ERROR: CODE = / ERCODE: .BYTE 0,0,0 SGMSG: .ASCII /SIGNAL = / SGNL: .BYTE 0,0,0 .EVEN ; TST$OK: .ASCIZ /TEST OK: SPFUN/ ; .EVEN .BLKW 2000. ; ; START OF CD HANDLER ; HSPACE = 20000 ; .END START