; MEMTST - a user memory test for AMOSL ; ; Copyright [c] Noel Alaska Systems Technology, 1983. VMAJOR = 1. ; version equates VMINOR = 0. VSUB = 0. VEDIT = 7. ; CHANGE EACH EDIT <----------- VWHO = 0. SEARCH SYS ; AMOS librarys SEARCH SYSSYM SEARCH TRM SEARCH MFN ; My library BEGIN: PHDR -2,-1,PH$REE!PH$REU ; ok to run logged out SUPVR ; get supervisor state CRLF CRT 255.,0 TYPESP VCVT BEGIN+2,OT$TRM CRLF TYPE LEA A1,BEGIN-15 MOV A1,D1 DCVT 0,OT$TRM TYPE <,> USRFRE A2 MOV A2,D1 DCVT 0,OT$TRM TYPE <-> MOV MEMEND,A3 SUB #1,A3 MOV A3,D1 DCVT 0,OT$TRM TYPESP <: total of> MOV A1,D1 ADD A3,D1 SUB A2,D1 DCVT 0,OT$TRM TYPECR < bytes.> CRLF CLR D4 ; Count of errors CLR D5 ; Count of passes MAIN: SUB A0,A0 ; Testing to start at memory location 0 LEA A1,BEGIN-15 ; Test up to MCB for this guy CALL TEST MOV A2,A0 ; Testing to start at USRFRE MOV A3,A1 ; Test up to MEMEND CALL TEST TYPESP <******* END OF PASS> INC D5 MOV D5,D1 DCVT 0,OT$TRM TYPECR < ******> BR MAIN ; Repeat entire process TEST: MOVB @A0,D0 ; Save contents of location to be tested CMP A0,A1 ; Have we reached the end of the region being tested? BLO MORE ; If not, continue NOMORE: RTN MORE: SVLOK ; Disable interrupts until memory contents are restored CLRB @A0 ; Store zeroes TSTB @A0 ; See if location now contains all zeroes BEQ NOERR1 NEXT: TYPESP MOV A0,D1 OCVT 0,OT$TRM CLR D1 MOVB @A0,D1 TYPESP < which has:> OCVT 0,OT$TRM CRLF INC D4 NOERR1: SETB @A0 ; Now try to set to all ones CMMB #-1,@A0 ; Did this work? BEQ NOERR2 ; Yes TYPESP MOV A0,D1 OCVT 0,OT$TRM CLR D1 MOVB @A0,D1 TYPESP < which has:> OCVT 0,OT$TRM CRLF INC D4 NOERR2: MOVB D0,@A0 ; Restore contents of memory location SVUNLK ; Enable interrupts CTRLC FINIS ; Wrap things up if ^C INC A0 JMP TEST FINIS: CRLF TST D5 BNE OK TYPECR <****** INCOMPLETE TEST ******> BR EXIT OK: MOV D4,D1 BNE BARF TYPECR BR EXIT BARF: OCVT 0,OT$TRM TYPECR < errors found.> EXIT: JOBIDX A0 BIC #J.CCC,@A0 CRLF EXIT EVEN END