.TITLE HPPAK .IDENT /V0000/ ;FORTRAN INTERFACES TO HP NUMBER PACKING ROUTINES IN HPNUMS .GLOBL SBN,MBN,MBP ;EXTERNAL GLOBALS .GLOBL ISBN,IMBN,IMBP ;INTERNAL GLOBALS ; ;SBN WILL BE A FUNCTION. OTHERS WILL BE CALLS. ; ; K = ISBN(NUMBER) ;PACK SINGLE BYTE NUMBER ISBN: MOV @2(R5),R0 ;GRAB THE ARGUMENT JSR PC,SBN ;DO THE UNPACK MOV R1,R0 ;RETURN FUNCTION CLR R1 ;IN R0 AS FORTRAN STANDARD INTEGER *2 RTS PC ; ; CALL IMBN(NUMBER,STRING_ADDRESS,NBYTES) ; UNPACKS NUMBER INTO STRING AT STRING_ADDRESS, RETURNS NBYTES ; USED. ASSUMES ALWAYS ENOUGH. IMBN: MOV @2(R5),R0 ;GET NUMBER MOV 4(R5),R1 ;AND STRING ADDRESS MOV R5,-(SP) ;GUARD R5 JSR PC,MBN ;UNPACK THE STUFF MOV (SP)+,R5 MOV R2,@6(R5) ;RETURN LENGTH USED RTS PC ; ; ; CALL IMBP (NUMX,NUMY,STRING_ADDRESS,NBYTES) ; UNPACKS NUMX,NUMY AS A PAIR INTO STRING AT STRING_ADDRESS, ; RETURNS NUMBER OF BYTES IN NBYTES. IMBP: MOV @2(R5),R0 ;GET NUMX MOV @4(R5),R1 ;GET NUMY MOV 6(R5),R2 ;GET ADDRESS MOV R5,-(SP) ;SAVE R5 JSR PC,MBP ;DO THE UNPACK MOV (SP)+,R5 ;GET BACK OUR ARG LINK MOV R3,@10(R5) ;RETURN NO. BYTES TO CALLER RTS PC ;THAT'S IT. .END