.TITLE MENTEC -- MENTEC FEATURE TEST .IDENT /V01.00/ BCSR =: 177520 ;BOARD BSR MR =: 177750 ;MAINTENANCE REGISTER PSW =: 177776 ;PROCESSOR STATUS REGISTER TOYCS =: 173000 ;TOY CSR PR7 =: 340 ;HIGH CPU PRIORITY $JSX =: 4 ;EXTENDED JOB STATUS WORD NOVBG$ =: 100 .MCALL .EXIT,.PRINT,.TRPSET ;SYSTEM MACROS .ASECT .=$JSX .WORD NOVBG$ ;DISABLE VBGEXE .PSECT START:: MOV #ARGS,R2 ;ARGUMENT BLOCK MOV #FTEST,R1 ;FORMAT STRING MOV @#BCSR,@R2 ;BCSR MOV @#MR,2(R2) ;MR MFPT ;CPU TYPE MOV R0,4(R2) ; CALL PRINT ;PRINT CALL TRSET ;CATCH TRAPS MOV #10$,ADDR ;RETURN ADDRESS MOV #10000,R3 ;SRC MOV #20000,R4 ;DST MOV #100,R5 ;CNT CALL 100$ ;MOVE (CCC) MOVB #17,NZVC ;... CALL 100$ ;MOVE (SCC) MOV #157770,R3 ;SRC MOV #20000,R4 ;DST MOV #100,R5 ;CNT CALL 100$ ;MOVE (CCC) 10$: .TRPSET #AREA,#0 ;DISABLE TRAP CATCHING CALL RDTOY ;READ TOY MOV #FTIME,R1 ;FORMAT MOV #TOYBUF,R2 ;ARGS CALL PRINT ;PRINT .EXIT ;EXIT 100$: MOV #110$,R0 ;PC MOV @#PSW,R1 ;PS CLRB @R1 ;... BISB NZVC,R1 ;... CALL PREGS ;PRINT REGS .PRINT #FMOVR ;PRINT MOVR CALL TRSET ;CATCH TRAPS MOVB NZVC,@#PSW ;PREPARE PS 110$: .WORD 75345 ;MOVR R3,R4,R5 120$: MOV @#PSW,R1 ;PS MOV #120$,R0 ;PC CALL PREGS ;REGS AFTER INSTRUCTION .PRINT #FDONE ;DONE RETURN RDTOY:: CALL 10$ ;MAKE SURE TOY IN KNOWN STATE CALL 30$ ;GET TOY ATTENTION 10$: MOV #TOYBUF,R0 ;TOY BUFFER CALL @PC ;PROPAGATE CODE FOUR TIMES CALL @PC ;... MOV #16.,R2 ;BIT COUNT 20$: MOV @#TOYCS+10,R1 ;READ BIT ROR R1 ;... ROR @R0 ;SAVE SOB R2,20$ ;ONE LESS BIT TO CARRY ABOUT TST (R0)+ ;TO NEXT WORD RETURN ;RETURN 30$: MOV #TOYATS,R0 ;TOY ATTENTION STRING CALL @PC ;PROPAGATE CODE FOUR TIMES CALL @PC ;... MOV #16.,R2 ;BIT COUNT 40$: CLR R1 ;INIT ROR @R0 ;GET BIT ROL R1 ;... ASL R1 ;SHIFT INTO ADDRESS BIT ADD #TOYCS,R1 ;FORMULATE AN ADDRESS MOVB @R1,R1 ;USE ADDRESS LINE SOB R2,40$ ;ONE LESS BIT TO CARRY ABOUT TST (R0)+ ;TO NEXT WORD RETURN ;RETURN TRINT:: MOV (SP)+,R0 ;PC MOV (SP)+,R1 ;PS MOV #4,-(SP) ;COMPUTE VECTOR BCC 10$ ;... ASL @SP ; 10$: CALL PREGS ;PRINT REGISTERS MOV #FTRAP,R1 ;FORMAT STRING MOV (SP)+,@R2 ;VECTOR CALL PRINT ;PRINT JMP @(PC)+ ;RETURN ADDR: .BLKW ;... TRSET:: .TRPSET #AREA,#TRINT ;CATCH TRAPS THRU 4/10 RETURN ;RETURN PREGS:: MOV R0,@R2 ;REGS MOV R1,2(R2) ;... MOV R3,4(R2) ;... MOV R4,6(R2) ;... MOV R5,10(R2) ;... MOV #FREGS,R1 ;FORMAT STRING MOV #200,-(SP) ;STRING TERMINATOR TST (PC)+ ;SKIP CLR PRINT:: CLR -(SP) ;STRING TERMINATOR MOV R2,-(SP) ;SAVE R2 MOV #BUFF,R0 ;BUFFER ADDRESS CALL $EDMSG ;EDIT MESSAGE MOV (SP)+,R2 ;RESTORE R2 MOVB (SP)+,@R0 ;TERMINATE STRING .PRINT #BUFF ;PRINT RETURN ;RETURN AREA: .BLKW 2 ;EMT AREA ARGS: .BLKW 5 ;EDMSG ARGUMENT BLOCK BUFF: .BLKB 256. ;MESSAGE BUFFER NZVC: .WORD 0 ;LOW PSW BITS TOYATS: .WORD 35305,56243,35305,56243 ;TOY ATTENTION STRING TOYBUF: .BLKW 4 ;TOY BUFFER FTEST: .ASCII "Mentec board feature test V01.00%N%N" .ASCIZ "BCSR=%P, MR=%P, MFPT=%P %7S ;MODULE INFO" FREGS: .ASCIZ "PC=%P, PS=%P, R3=%P, R4=%P, R5=%P ;" FMOVR: .ASCIZ "MOVR R3,R4,R5" FDONE: .ASCIZ "OK" FTRAP: .ASCIZ "TRAP TO %P" FTIME: .ASCIZ "%P %P %P %P ;TOY" .END START