;************************************************ ;* TSLBOJ.M68 (JOBLST spelled backwards) ;* ;* Scans the system and prints every defined ;* JOB to the screen "backwards" from last ;* JOB to the first using the STACK. ;* ;* Usage: TSLBOJ ;* ;* by Dave Heyliger - AMUS Staff ;************************************************ OBJNAM TSLBOJ.LIT ;Define the final product SEARCH SYS ;Grab all MACRO definitions SEARCH SYSSYM SEARCH TRM ;--- The following will define a 'version number' that will be displayed ; when you do a DIR/V JOBLST.LIT. These numbers are 'made-up' by the ; programmer, and can be changed when the code is changed. ; VMAJOR=1. ;Major version number of the program VMINOR=0. ;Minor version number of the program VEDIT=100. ;the edit number of the program ;--- This small portion of the code reserves a little memory space in YOUR ; memory partition for a variable I called "BUFFER". ; .OFINI ;OFfset INItialization: .OFDEF BUFFER,7. ;OFfset DEFinition - "BUFFER" .OFSIZ IMPSIZ ;IMPSIZ is the final size of bytes (7) ;--- Start the program with a header, and also get the size of our memory ; buffer - the 7 bytes where byte "0" is the 1st byte of 7 in "BUFFER". ; PHDR -1,0,PH$REE!PH$REU ;Program is Re-entrant & Re-useable GETIMP IMPSIZ,A5 ;Reg. A5 now ^'s to byte "0" of BUFFER ;--- Now get the ADDRESS of the start of the JOB table and plop it into A0 ; GETTBL: MOV JOBTBL,A0 ;Get base of JOB TABLE into A0 ;--- Mark the Top of Stack (TOS) with a "-1" ; MOV #-1.,A1 ;a "-1" will be a marker for TOS PUSH A1 ;PUSH our marker onto the STACK ;--- Now for each JCB address, PUSH this address onto the STACK ; STACK: MOV (A0)+,A4 ;and let A4 point to each JBC MOV A4,D0 ;this will set the flags 2 B checked BMI OUTPUT ;end of the JOB TABLE on a "-1" BEQ STACK ;get the next JCB if zero PUSH A4 ;else PUSH the JCB address JMP STACK ;and do it again for the next JCB ;--- The following loop will 1) POP each JCB address into register A4 ; 2) Check to see if we are at TOS ; 3) If NOT, print the JOBNAME to the screen ; 4) and get the next JCB address from stack ; OUTPUT: POP A4 ;get the next value off the STACK MOV A4,D0 ;sets the flags BMI EXIT ;if it is a "-1" then time to quit LEA A1,JOBNAM(A4) ;else ^ A1 to the start of a JOB name LEA A2,BUFFER(A5) ;and ^ A2 to byte "0" of "BUFFER" UNPACK ;Find the ASCII letters in JOBNAM UNPACK ; ...for up to 6 digits CLRB @A2 ;Place a "null" after the characters LEA A2,BUFFER(A5) ;Repoint A2 to byte "0" of "BUFFER" TTYL @A2 ;Print out all chars until a null CRLF ;Carriage return & line feed JMP OUTPUT ;Time for the next name in the table ;--- Finally, let the user know you are through ; EXIT: TYPE <End of "backwards" JOB listing for this system> CRLF EXIT ;return to AMOS END