OBJNAM BASE.LIT ; Created 22-Nov-84, Last modified 3-Mar-85 ; by Irv Bromberg, Medic/OS Consultants ; 78 Wildginger Way, Toronto, Ontario, CANADA M3H 5X1 VEDIT=11. VMINOR=2 VMAJOR=3 VSUB=0 IF EQ,1 Syntax: BASE O for octal BASE D for decimal BASE H for hexadecimal BASE shows current base For decimal mode to work the OCVT patch must have been installed during bootup, using the OCTPCH command near the beginning of AMOSL.INI file. ENDC SEARCH SYS SEARCH SYSSYM JCB =A0 Buffer =A2 Mode =D0 Number =D1 J.DEC=^O10000 Header: PHDR -1,0,PH$REE!PH$REU ; check if OCVT patch active, warn user if it has not been installed MOV JOBCUR,JCB ; save existing OCT/DEC/HEX mode bits BYP ; OCVT is active, check for Base code LIN BEQ ShowBase CMPB @Buffer,#'O JNE TryDec TYPE ANDW #^C,JOBTYP(JCB) JMP Done ChkPCH: PUSH Buffer ; save pointer to input line PUSHW JOBTYP(JCB) ORW #,JOBTYP(JCB) ; set DEC mode PUSHW ; get some workspace MOV SP,Buffer MOV #11.,Number ; output the number 11 - if DEC patch OCVT 0,OT$MEM ; not active result will be "B" POPW Number POPW JOBTYP(JCB) ; restore original OCT/DEC/HEX mode POP Buffer CMPW Number,#<'1_8.+'1> ; did we get "11" ? RTN ShowBase:MOVW JOBTYP(JCB),Mode TYPE ANDW #J.DEC!J.HEX,Mode ; select relevant bits BEQ Octal CMPW Mode,#J.HEX ; is it hex only? BEQ Hex Dec: TYPECR EXIT Hex: TYPECR EXIT Octal: TYPECR CALL ChkPCH BEQ Exit TYPE <%WARNING -- > NotIn: TYPECR Exit: EXIT TryDec: CMPB @Buffer,#'D BNE TryHex CALL ChkPCH BEQ 10$ TYPE BR NotIn 10$: TYPE ORW #,JOBTYP(JCB) BR Done TryHex: CMPB @Buffer,#'H BEQ SetHex TYPECR EXIT SetHex: ANDW #^C,JOBTYP(JCB) ORW #J.HEX,JOBTYP(JCB) TYPE Done: TYPECR < mode set> EXIT END .