.TITLE RAD50 .PSECT RAD50,I,RO,GBL .PAGE RAD50P::;PACK A WORD WITH 3 ASCII CHR-ONLY #S AND LETTERS ; ASSUMED TO BE PRESENT MOV #3,R3 ; R0=ADD OF 1ST CHR OF 3 BYTES TO BE CONVERTED CLR (R1) ; R1=ADD OF WORD TO STORE COVERTED BYTES CVLB: MOVB (R0)+,R2 ; R2=BYTE BEING CONVETRED BIC #177600,R2 ; R3=CTR- 3 BYTES CMPB #40,R2;IS IT A BLANK---R4=TMP STORAGE BNE NMCK ; NO CHECK FOR NUMBER CLR R2 ; RAD 50 EQ IS 0 BR BYCV NMCK: CMPB #72,R2 ; IS IT A NUMBER BLT BYLT ; NO MUST BE A LETTER ADD #36-60,R2 BR BYCV BYLT: ADD #1-101,R2 BYCV: ASL (R1) ; MULT BY 50(8) ASL (R1) ASL (R1) MOV (R1),R4 ASL (R1) ASL (R1) ADD R4,(R1) ADD R2,(R1) ; ADD CURRENT RAD 50 CHR DEC R3 ; DEC CTR BGT CVLB ; LOOP BACK IF NOT DONE RTS PC .PAGE RAD50U::;UNPACK WORD TO 3 ASCII BYTES ; R0=ADD TO STORE 3 BYTES MOV (R1),-(SP) MOV #3100,R3;SET DIVISOR FOR HIGH ORDER BYTE JSR PC,CVT ; R1= ADD OF RAD 50 WORD MOV #50,R3 ; R2=BYTE BEING CONVERTED JSR PC,CVT ; R3=CTR MOV (R1),R2 JSR PC,DVDN MOV (SP)+,(R1) RTS PC CVT: CLR R2 ; CLEEAR BYTE CVTLB: CMP R3,(R1) BHI DVDN SUB R3,(R1) INC R2 BR CVTLB DVDN: TSTB R2 ; RAD 50 CHR IN R2 IS IT BLANK BNE LTCK ; IF NO CHECK IF LETTER MOV #40,R2 BR UPDN LTCK: CMPB #32,R2 ; IS IT A LETTER BLT CKNM ; NO ITS A NUMBER ADD #101-1,R2 BR UPDN CKNM: ADD #60-36,R2 UPDN: MOVB R2,(R0)+ RTS PC .END