diff --git a/build/misc.tcl b/build/misc.tcl index 39fe651d..8a7bf576 100644 --- a/build/misc.tcl +++ b/build/misc.tcl @@ -1147,6 +1147,13 @@ type ":kill\r" respond "*" ":midas dsk0:maint;_tst342\r" expect ":KILL" +# Test one-proceed. +respond "*" ":midas maint;ts 1proc_1proc test\r" +expect ":KILL" +respond "*" ":maint;1proc\r" +expect "SUCCESSFUL" +expect ":KILL" + # KNS10, KS10 console respond "*" ":cwd kshack\r" respond "*" ":cross\r" diff --git a/src/maint/1proc.test b/src/maint/1proc.test new file mode 100644 index 00000000..4ec5e37a --- /dev/null +++ b/src/maint/1proc.test @@ -0,0 +1,69 @@ + TITLE ONE-PROCEED TEST + +A==1 +B==2 + +USRCH==1 + +LOC 42 + TSINT + +LOC 100 +GO: MOVE A,[SQUOZE 0,OIPBIT] + .EVAL A, + .LOSE + HRLZM A,OIPBIT' ;PC FLAGS FOR ONE-PROCEED + + .OPEN USRCH,[.BIO,,'USR ? 0 ? SIXBIT /FOOBAR/] + .LOSE + .ACCESS USRCH,[START] + MOVE A,[-LEN,,START] + .IOT USRCH,A ;COPY CODE TO INFERIOR + + .USET USRCH,[.RINTB,,A] + .SUSET [.SMSK2,,A] ;ENABLE INFERIOR INTERRUPT + + MOVEI A,START ;START HERE + IOR A,OIPBIT ;ONE-PROCEED + .USET USRCH,[.SUPC,,A] ;SET INFERIOR PC AND FLAGS + .USET USRCH,[.SUSTP,,[0]] ;START INFERIOR + + JFCL + .HANG ;WAIT FOR INTERRUPT + +TSINT: 0 + 0 + .USET USRCH,[.SPIRQC,,[0]] ;CLEAR INFERIOR INTERRUPT + .USET USRCH,[.RUPC,,A] + HRRZ B,A + CAIN B,STOP + JRST [ .UCLOSE USRCH, + .VALUE [ASCIZ /:TEST SUCCESSFULî:KILLî/] ] + CAME B,UPC + JRST [ .UCLOSE USRCH, + .VALUE [ASCIZ /:TEST FAILEDî:KILLî/] ] + AOS UPC + IOR A,OIPBIT ;ADD ONE-PROCEED BITS + .USET USRCH,[.SUPC,,A] + .USET USRCH,[.SUSTP,,[0]] ;CONTINUE + .DISMIS TSINT+1 + +CONSTANTS +VARIABLES + +UPC: START+1 + +START: ;INFERIOR CODE + JFCL + JRST 2,@[.+1] + MOVE B,[440700,,STRING] + ILDB A,B + DPB A,B + IBP B + IDPB A,B +STOP: +STRING: ASCIZ /FOOBAR/ +CONSTANTS +LEN=.-START + +END GO