Cœ7$ ?BOOT-U-No boot on volume €ß‹tÿý€”vÿú€ÿ,,DVAL SWIT BEFORE 1 PIP - J,,DVAL SWIT EXCLUDE 1 PIP - P SWIT POSITION 1 PIP - M,,DVAL SWIT INFORMATION 1 PIP - X SWIT WAIÕ9gô&û3 ALLOCATE 2 1 - FILEX U SWIT ENTRY 2 - QUEMAN M NOS SWIT NOQUERY 1 - - - DIT ENDS OVCMD DELETE ITBLE 7 OJSR PC,INITIT JSR PC,DETPRG CMPB R0,#$$QUEM BNE 1$ MOVB #'M,R3 JSR PC,LOOKSW 1$: OJMP CMDEXE .ENDC .IF NE PRIN$$!DELE$$ OVAQNM: OINST MOVDEV,SDEV1,* SŽUSR,KMOVLY2kNick ZymarisDECRT11A EV,DEFDEV,,* OINST MOV LPDEV+2,DEFDEV+2,,* OJSR PC,ACTFOT OINST TSTB FOTFLG,,* BEQ 1$ TSTB FTPFLD-FSIZ+1(R0) BNE BADEXT 1$: OINST MOV SDEV1,DEFDEV,,* OINST MOV SDEV2,DEFDEV+2,,* RETURN BADEXT: OJMP BADCOM SDEV1: .WORD 0 SDEV2: .WORD 0 ..QULP == . LPDEV: .ASCIZ "LP:" .EVEN FOTIND: .WORD <-2-FOTYP>*OFBSIZ OVAQPD: OINST MOV FORCEP,R0,* BIC #^C<37>,R0 BNE 1$ MOV @#SYSPTR,R0 BIT #QUEUE$,CONFIG-$RMON(R0) BEQ 1$ MOVB #200!$$QUEM,R0 BIC #340,R0 OINST MOV R0,FORCEP,,* 1$: RETURN DETPRG: OINST MOV FORCEP,R0,* BIC #^C<37>,R0 CMPB #$$QUEM,R0 BNE 1$ MOV R0,-(SP) ADDR FOTIND,R4 OINST MOV LPDEV,DEFDEV,,* OINST MOV LPDEV+2,DEFDEV+2,,* OJSR PC,MAKOFL MOV (SP)+,R0 1$: RETURN FNDSWT: CLR R0 OADDR TRANSW-1,R1 1$: TSTB (R1)+ INC R0 OINST CMPB R0,NSWITS,,* BGT 2$ MOVB (R1)+,R2 OADDR STRANT,R2,ADD CMPB @R2,R3 BNE 1$ TST (PC)+ 2$: SEC RETURN PUTOUT: CLR R2 OADDR FILST-1,R0 1$: INC R2 ADD #FSIZ,R0 CMPB @R0,#FOTYP BNE 1$ MOVB R2,@R1 RETURN LOOKSW: JSR PC,FNDSWT BCS 4$ TSTB @R1 BNE 4$ JSR PC,PUTOUT 4$: RETURN .ENDC .IF NE TYPE$$ .SBTTL TYPE command SYNTAX TYPE PROMPT $FILE SCALL GSWIT,<1,2> REQBLNK DEFILE FSTARF DEFINX $.LST SCALL SPISPC,<1> FLDBEG SCALL CSPISPC,<1> ITEREND DEFOSPC $TTSPC EOLSEQ PIP SETSWIT A WILDEF PIP,W,LOG,ASK,NLG,NLG,$WILD0 COMPDEF APLYDEF PIP,LOG,W APLYDEF PIP,ASK,Q END SWITS TYPE SWIT LOG 1 PIP - - LOG ENDNO SWIT QUERY 1 PIP - - ASK SWIT COPIES 1 PIP - K,,DVAL SWIT DELETE 2 PIP - D SWIT NEWFILES 1 PIP - C SWIT BEFORE 1 PIP - J,,DVAL SWIT DATE 1 PIP - C,,DVAL SWIT SINCE 1 PIP - I,,DVAL SWIT INFORMATION 1 PIP - X SWIT WAIT 1 PIP - E NOS SWIT NOLOG 1 - - - NLG ENDS TYP1: ITBLE 7 OJSR PC,INITIT OJMP CMDEXE .ENDC .IF NE CREA$$ .SBTTL CREATE COMMAND SYNTAX CREATE PROMPT $FILEE SCALL GSWIT,<1> REQBLNK SCALL ROUSPC,<1,2> ROUTINE ATE SETSWIT C EOLSEQ DUP END SWITS CREATE ENDNO SWIT START 1 DUP - G,,DVAL SWIT EXTEN„×Fy‹°x û3„×Fs‹°xû3„IqRû3„J†°xû3J†°xû3 PC,INITIT OJMP CMDEXE OVAATE: OINST TST FORCEP,,* BPL 1$ CMPB (R4)+,(R4)+ 1$: RETURN .ENDC .IF NE DELE$$!PRIN$$!TYPE$$ .IRP NUM,<\$OPTX> OPTX'NUM:: .ENDR .BYTE -1 .DSABL CRF $SCNT=0 SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWTDEF FLGTXT SWT-2,4 .MODULE KMOVLY,RELEASE=V05,VERSION=15,COMMENT= -8 ; Year 2000 modifications (c) 1997-1998 Nicholas Zymaris ; -145,145 .SBTTL DATE ; Comments and Y2K revision of 25-Jan-98 (through 6$) -164,165 TSTB @R5 ; if cmd line 1st char zeroed, this works BEQ 6$ ; display date (don't set it) -168,171 INC R5 ; if no spc "before" it, put "spc" for DECNUM 1$: CLR R1 ; make sure no junk in R1 before call JSR R3,NUMK ; convert & range-check date, -> R1 .BYTE 0.,31.-0. ; legal day-of-month range -175,196 ASR R1 ; e.g. 1 -> 40 (position for date word) INC R5 ; point to next character ("-") MOV R5,R3 ; save ptr to entered date string 2$: ADD #2000,R1 ; add 1 month to prospective date word TSTB 1(R4) ; Read past last month? BEQ 10$ ; Yes, KM assumes it's from invalid input MOV R3,R5 ; restore ptr to entered date string MOV R4,R2 ; Get address of month being looked at CMP (R4)+,(R4)+ ; Point to next month (not this month) 3$: CMPB -(R5),(R2)+ ; Nxt entered chr = nxt chr of this month? BEQ 4$ ; Branch if so MOVB -1(R2),-(SP) ; Chr didn't match; save it & see if lowercase BICB #40,@SP ; Convert from lowercase CMPB @R5,(SP)+ ; Now does it match? BNE 2$ ; No, try next month 4$: CMP R2,R4 ; Repeat 3$ until done with this month BLOS 3$ ; (INC till it reaches next month) ; JSR R3,NUMK ; Here after month dealt with; now for year ; .BYTE 72.,99.-72. ; range of non-Y2K-compatible DATE ojsr pc,num2k ; Use new routine with no inline range bcs 10$ ; CS on error; can't BR to local label in subrt TSTB @R5 ; Check next character BNE 10$ ; ...if nonzero, assume garbage after year ADDR TMRLST,R0 ; Point to parameter block for .SDDTM -198,199 MOV R1,-(R0) ; New date word here (yr added by NUM2K) MOV R0,SDTM+2-(R0) ; Enter the time from .GTIM -203,203 ; ; This is monitor edit of 10-Nov-97, inserted into KMOVLY.MAC 20-Dec-97. -205,208 mov r2,(pc)+ ; Save date (don't use stack) orgdat: .word 0 BIT #140037,R2 ; only output "No date" if 1972, not 2004 Beq 9$ ; was 10$ ; If year >1999. then 0 in low 5 bits is OK bic #140000,r2 ; Munge year so day, month OK ; (if not, ^N's get into string, etc.) -210,216 MOV R2,-(SP) ; push date word onto stack BIC #^C<37>,@SP ; isolate ash #-5,r2 ; [1-26-98] to save space in overlay ; ASR R2 ; (this would fail if hi bit set) ; ASR R2 ; ASR R2 ; ASR R2 ; ASR R2 ; -218,218 CALL R10ONF ; print day -223,226 MOV #5,R2 ; LEN("-MMM-")=5 8$: .TTYOUT (R4)+ ; print month ; DEC R2 ; or SOB R2,8$ (except on old PDP's) ; BNE 8$ sob r2,8$ -229,230 bit #140000,orgdat ; Check saved date bne 13$ ; branch if year 2004. and up cmp r0,#34 ; Year less than 2000.? blo 11$ ; yes, use old monitor routine sub #34,r0 ; Here if year is 2000.-2003. (34-37) mov #20.,centry ; [1-16-98] set first two digits br 12$ ; Print 4-digit 21st-century year 13$: mov orgdat,-(sp) bic #37777,(sp) ; Isolate high bits (if any) of year swab (sp) ; OK since it won't set carry -- shift... ror (sp) ; ...9 bits over [26-Jan-98] add (sp)+,r0 ; Add it to year sub #<2000.-1972.>,r0 mov #20.,centry ; [1-16-98] set first two digits br 12$ 11$: ADD #72.,R0 ; add 1972. to year offset (only old dates) mov #19.,centry ; [1-16-98] set first two digits 12$: call first2 ; Print first two digits of year CALL R10OUT ; Print year (1973-2099, last 2 digits) -239,246 NUMK: OJSR PC,DECNUM ; Commented 25-Jan-1998 MOVB (R3)+,R2 ; get lower bound from caller SUB R2,@SP ; subtract lower bound (0 exc for non-Y2K yr) BLE 10$ ; Invalid (& trashed result) if <=0 MOVB (R3)+,R2 ; get upper bound from caller CMP @SP,R2 ; see if adjusted val > up bnd BGT 10$ ; if so, give KMON invalid error ADD (SP)+,R1 ; add good value to R1 -247 first2: mov r0,-(sp) ; [1-16-98] Print first two digits of year mov (pc)+,r0 ; " centry: .word 19. ; " 1st 2 digits (century) (will be modified) call r10out ; " mov (sp)+,r0 ; " rts pc ; " -2569,2569 7$: KMEROR ; [2-4-98] -F- not -W- = orig / -2,4 .MODULE KMOVLY,RELEASE=V05,VERSION=15,COMMENT= -8 ; Year 2000 modifications (c) 1997-1998 Nicholas Zymaris ; -145,145 .SBTTL DATE ; Comments and Y2K revision of 25-Jan-98 (through 6$) -164,165 TSTB @R5 ; if cmd line 1st char zeroed, this works BEQ 6$ ; display date (don't set it) -168,171 INC R5 ; if no spc "before" it, put "spc" for DECNUM 1$: CLR R1 ; make sure no junk in R1 before call JSR R3,NUMK ; convert & range-check date, -> R1 .BYTE 0.,31.-0. ; legal day-of-month range -175,196 ASR R1 ; e.g. 1 -> 40 (position for date word) INC R5 ; point to next character ("-") MOV R5,R3 ; save ptr to entered date string 2$: ADD #2000,R1 ; add 1 month to prospective date word TSTB 1(R4) ; Read past last month? BEQ 10$ ; Yes, KM assumes it's from invalid input MOV R3,R5 ; restore ptr to entered date string MOV R4,R2 ; Get address of month being looked at CMP (R4)+,(R4)+ ; Point to next month (not this month) 3$: CMPB -(R5),(R2)+ ; Nxt entered chr = nxt chr of this month? BEQ 4$ ; Branch if so MOVB -1(R2),-(SP) ; Chr didn't match; save it & see if lowercase BICB #40,@SP ; Convert from lowercase CMPB @R5,(SP)+ ; Now does it match? BNE 2$ ; No, try next month 4$: CMP R2,R4 ; Repeat 3$ until done with this month BLOS 3$ ; (INC till it reaches next month) ; JSR R3,NUMK ; Here after month dealt with; now for year ; .BYTE 72.,99.-72. ; range of non-Y2K-compatible DATE ojsr pc,num2k ; Use new routine with no inline range bcs 10$ ; CS on error; can't BR to local label in subrt TSTB @R5 ; Check next character BNE 10$ ; ...if nonzero, assume garbage after year ADDR TMRLST,R0 ; Point to parameter block for .SDDTM -198,199 MOV R1,-(R0) ; New date word here (yr added by NUM2K) MOV R0,SDTM+2-(R0) ; Enter the time from .GTIM -203,203 ; ; This is monitor edit of 10-Nov-97, inserted into KMOVLY.MAC 20-Dec-97. ; largely rewritten (using mostly my code for printing date) 26-Jan-98 -205,230 BIT #140037,R2 ; only output "No date" if 1972, not 2004 Beq 9$ ; was 10$ ; If year >1999. then 0 in low 5 bits is OK mov r4,-(sp) ; Save my scratch registers mov r5,-(sp) mov r2,r0 ; Get a copy of date word bic #^C1740,r0 ; Mask out all but day (date) of month ; clc ash #-5,r0 ; Right-justify it call r10out ; convert & print day of month mov r2,r4 ; Get a copy of date word bic #^C36000,r4 ; Mask out all but month ; clc ash #-10.,r4 ; Right-justify the month dec r4 ; Convert to table offset rol r4 rol r4 ; *4 (Point to month in table) add #months,r4 MOV #5,R5 ; LEN("-MMM-")=5 8$: .TTYOUT (R4)+ ; print month ; DEC R5 ; or SOB R5,8$ (except on old PDP's) ; BNE 8$ sob r5,8$ mov r2,r4 ; Get the date word again mov r4,r5 ; Duplicate it bic #^C37,r5 ; Mask out all but low year bits bic #^C140000,r4 ; Mask out all but high year bits swab r4 ror r4 ; Shift into position add r4,r5 mov #19.,r0 ; Prepare to print 1st 2 digits add #72.,r5 ; Year is modulo 1972 A.D. cmp r5,#99. ; Is actual year in 20th century? blos cty20 ; Yes inc r0 ; No, 21st century sub #100.,r5 ; Correct lower 2 digits for R10OUT cty20: call r10out ; Print 1st 2 digits mov r5,r0 mov (sp)+,r5 ; Restore regs (needs a tst (sp)+,(sp)+ too?) mov (sp)+,r4 ; (No, I chkd it; entry SP=exit SP in orig.) CALL R10OUT ; Print year (1973-2099, last 2 digits) -239,246 NUMK: OJSR PC,DECNUM ; Commented 25-Jan-1998 MOVB (R3)+,R2 ; get lower bound from caller SUB R2,@SP ; subtract lower bound (0 exc for non-Y2K yr) BLE 10$ ; Invalid (& trashed result) if <=0 MOVB (R3)+,R2 ; get upper bound from caller CMP @SP,R2 ; see if adjusted val > up bnd BGT 10$ ; if so, give KMON invalid error ADD (SP)+,R1 ; add good value to R1 -2569,2569 7$: KMEROR ; [2-4-98] -F- not -W- = orig / SLP files for KMOVLY and USR 31-Dec-1999 ---------------------------- These SLP files will generate a Y2K-compliant KMOVLY.MAC from the original V5.01C KMOVLY.MAC (which, if supplied on RX-50 media, is on distribution diskette 5). Use KMOVLY.SLP; KMOVLS.SLP can be used if space is tight (e.g. especially when sysgenning an XM monitor) but it is not fully debugged. The date and size of the original KMOVLY.MAC is 27-Jul-1984, 208. blocks, and the date of both versions of the generated KMOVLY.MAC is 4-Feb-1998; the KMOVLS version is 213. blocks, while the KMOVLY version is 214. blocks. Example of usage: .SLP DL1:KMOVLY.MAC/A=DL0:KMOVLY.MAC,DL1:KMOVLY.SLP This example assumes that the original, unmodified sources are on DL0: and the SLP file is on DL1: The generated KMOVLY.MAC file will go on DL1:; make sure that you do not lose the original copy of KMOVLY.MAC by writing the output file to the same disk. It is necessary to use the /A switch here to suppress audit trails so that SLP won't complain about overwriting the comments with audit trails. The file USR.SLP patches USR.MAC to put the NUM2K (Y2K version of NUMK) routine, that would otherwise take up space in KMOVLY, into the USR. -2111 ; ; NUM2K: By Nicholas Zymaris 25-Jan-1998 (optimized 26-Jan-1998) ; Like NUMK in KMOVLY.MAC but this is for entering dates 1973.-2099. A.D. ; .dsabl lsb .psect patch$ num2k:: jsr pc,decnum cmp (sp),#99. ; Year entered >99.? bgt digit4 ; Yes, must be 4-digit year cmp (sp),#72. ; Entered >72.? (Must use 1972. for that yr) bgt add19 ; Make it 1900+entered value add #100.,(sp) ; 00.-72. -> 2000+val (72. no longer invalid!) add19: add #1900.,(sp) digit4: cmp (sp),#1972. ble L10 cmp (sp),#2099. bgt L10 sub #1972.,(sp) ; for conversion to internal format mov (sp),-(sp) ; save it bic #37,(sp) ; clear low part of this copy bic #^C37,2(sp) ; clear high part of other copy to add right rol (sp) ; Shift high bits to proper date word position swab (sp) ; (9. bits over) add (sp)+,(sp) ; Add high & low bits add (sp)+,r1 ; Add it to date word clc ; Indicate no error cmp (pc)+,(pc)+ ; Bypass error return L10: tst (sp)+ ; [1-26-98] Adjust stack sec ; Indicate error to caller rts pc .psect rmnusr /