DataMuseum.dk

Presents historical artifacts from the history of:

Philips Data Systems

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Philips Data Systems

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦9a02d1f5c⟧

    Length: 20558 (0x504e)
    Notes: pts_type(SC)
    Names: »WUASS.SC«

Derivation

└─⟦f45ea3bc3⟧ Bits:30009713 Philips computer tape "WSM"
    └─⟦this⟧ »WSM:UTIL/WUASS.SC« 

PTS(SC)

	IDENT	WUASS	W,REL=2.3,841211,870155940230

** HISTORY: 

** 84-12-11/CJ    I.C. WSM-UTIL <-> TOSSUT REL13 IMPL.
** 83-10-06/MAER  CHECK OF TOSS FORMATTED DISC ADDED. 
** 83-02-28/MAER  RELEASE 1.O 
** 83-02-09/MAER  "RETRIES-PERFORMED"-BIT MASKED OUT
	EJECT

	ENTRY	GIPLFC 
	ENTRY	CHANFC 
	ENTRY	CREVOL 
	ENTRY	CREFIL 
	ENTRY	DELFIL 
	ENTRY	GETVOL 
	ENTRY	COPYDD 
	ENTRY	PRINTF 
	ENTRY	CHVOL
	ENTRY	SURVEY 
	ENTRY	RDSECT 
	ENTRY	WRSECT 
	ENTRY	READDK 
	ENTRY	WRITDK 
	ENTRY	OPENF
	ENTRY	CLOSEF 
	ENTRY	BCDBIN 
	ENTRY	BINBCD 
	ENTRY	RCGET
	ENTRY	GETIND 
	EJECT

	EXTRN	I:EVA0 
* 
	EXTRN	T:FDSP 
	EXTRN	I:RT1
	EXTRN	T:LOFS 
	EXTRN	T:BCDB 
	EXTRN	T:BINB 
	EJECT

CALL	FORM	16=/F6A1,16 

TOSS1	EQU	'TO'
TOSS2	EQU	'SS'
TOSS3	EQU	' R'
TOSS4	EQU	'EL'
	EJECT
*********************************************** 
* 
*  PREPARE FOR INTERTASK WSMUTIL <-> TOSSUT 
* 
*********************************************** 

*  ORDER-CODES

RDCODE	EQU	/0082	READ-WITH-WAIT  CODE 
WRCODE	EQU	/0086	WRITE-WITH-WAIT  CODE
TOCODE	EQU	/00B9	SET TIME OUT CODE

*  ECB FOR I. C.

INTECB	EQU	*	ECB BUFFER 
ECBFC	DATA	/0000	FILE CODE
ECBBUF	DATA	0	BUFFER ADDRESS
ECBREQ	DATA	80	REQUIRED LENGTH
ECBEFF	DATA	0	EFFECTIVE LENGTH
ECBRC	DATA	0	RETURN CODE
ECBCW	DATA	0	CONTROL WORD 
ECBCW2	DATA	0	CONTROLWORD 2 

*********************************************** 
* 
*  PREPARE FOR GETTING FILE-CODE OF IPL DEVICE
* 
*********************************************** 

SCTIPL	EQU	/030C	POS FOR IPL-DEVICE IN SYSTAB 
IPLFC1	DATA	'#MU1',SCTIPL,IPLBUF,2
IPLBUF	DATA	0 
	EJECT
*********************************************** 
* 
*  GET FILE-CODE FOR IPL DEVICE 
* 
*  CALL: CALL  GIPLFC,<TIDBIN>,<IPLFC>
* 
*********************************************** 

GIPLFC	EQU	*
	CALL	I:EVA0	A9 -> RECEIVING TASK 
	LDR*	A1,A9	LOAD REC. TID IN A1 
	ST	A1,IPLFC1+2	STORE RECEVING TID
	LDKL	A7,IPLFC1 
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	21	GET FC 
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
	CALL	I:EVA0	GET ADRESS TO <IPLFC>
	LD	A1,IPLBUF	LOAD FC IN A1 
	STR	A1,A9	STORE FILECODE 
	ABL	I:RT1	RETURN 
	EJECT
* 
*   CHANGE FILE CODE IN ECB 
*   CALL: 
*        CALL CHANFC,DATASET,FILECODE 
* 
CHANFC	EQU	*
	CALL	T:FDSP	GET DAT-ENTRY IN A3 AND DSCB-ENTRY IN A8 
	LDR	A6,A3	AND SAVE A3
	CALL	I:EVA0	GET ADDR. TO BIN 
	LC	A3,1,A9	GET NEW FC
	SC	A3,1,A6	AND STORE IN DAT
	SC	A3,1,A8	AND IN DSCB 
	ABL	RETUR
	EJECT
******************
*  CREATE VOLUME
******************
CREVOL	EQU	*
	LDKL	A4,'CR' 
	LDKL	A6,'V ' 
	RF	UTINF 
****************
*  CREATE FILE
****************
CREFIL	EQU	*
	LDKL	A4,'CR' 
	LDKL	A6,'F ' 
	RF	UTINF 
* 
* 
****************
*  DELETE FILE
******************
DELFIL	EQU	*
	LDKL	A4,'DL' 
	LDKL	A6,'F ' 
	RF	UTINF 
* 
* 
	EJECT
****************
* PRINT FILE
****************
* 
* 
PRINTF	EQU	*
	LDKL	A4,'PR' 
	LDKL	A6,'F ' 
	RF	UTINF 
* 
* 
**********************
*  COPY DISK TO DISK
**********************
COPYDD	EQU	*
	LDKL	A4,'CD' 
	LDKL	A6,'D ' 
	RF	UTINF 
********* 
*  PVC  * 
********* 
SURVEY	EQU	*
	LDKL	A4,'PV' 
	LDKL	A6,'C ' 
	RF	UTINF 
	EJECT
* 
*     PERFORME A CALL TO ONE OF THE ROUTINES
*       CRVOL,CRFILE,DLFILE,COPVOL OR PRVTOC
*      A1   ADDRESS TO THE WANTED ROUTINE 
* 
UTINF	EQU	* 
	CALL	I:EVA0	A9 = :A PBLOCK 
	STR	A4,A9	STORE TOSSUT CMD 1WORD 
	ST	A6,2,A9	STORE TOSSUT CMD 2WORD
	LDR	A4,A9	SAVE ADRESS TO PBLOCK
	CALL	I:EVA0	DUMMY
	CALL	I:EVA0	DUMMY
******************************************* 
* 
*  SET TIME-OUT ON OUTPUT FILECODE 99 
* 
******************************************* 
	LDKL	A8,INTECB	LOAD ADRESS TO ECB
	LDKL	A6,/0099	LOAD OUTPUT FILECODE 
	STR	A6,A8	STORE FILECODE IN ECB BUF
	LDKL	A6,10	LOAD TIME-OUT 
	ST	A6,10,A8	STORE TIME-OUT IN CONTROLWORD
	LDKL	A7,TOCODE	PUT TIMEOUT CODE TO A7
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	1 
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
	EJECT
*************************************** 
* 
*  SEND A BUFFER CONTAINING TOSSUTILITY COMMAND 
*  TO TOSSUTIL APPLICATION VIA INTERTASK COMMUNICATION
* 
*************************************** 
	LDKL	A6,'TU'	MOVE TID TO ... 
	ST	A6,10,A8	     ...CONTROL WORD 
	ST	A4,2,A8	STORE BUF ADDR TO ECB 
	LDKL	A7,WRCODE	PUT WRITE CODE TO A7
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	1 
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
	LD	A1,8,A8	LOAD ECB RETCOD 
	RF(Z)	GOON1	GO ON IF CR=0
	LDK	A1,20	LOAD I/O-ERROR 0020
	RF	RET2
GOON1	EQU	* 
******************************************* 
* 
*  SET TIME-OUT ON INPUT FILECODE 98
* 
******************************************* 
	LDKL	A6,/0098	LOAD INPUT FILECODE
	STR	A6,A8	STORE FILECODE IN ECB BUF
	LDKL	A6,-1	LOAD TIME-OUT 
	ST	A6,10,A8	STORE TIME-OUT IN CONTROLWORD
	LDKL	A7,TOCODE	PUT TIMEOUT CODE TO A7
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	1 
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
	EJECT
*************************************** 
* 
*  SETUP INTERTASK COMMUNICATION TO RECEIVE A BUFFER
*  FROM TOSSUTILITY APPLICATION 
* 
*************************************** 
	LDKL	A6,'TU'	MOVE TID TO ... 
	ST	A6,10,A8	     ...CONTROL WORD 
	LDKL	A7,RDCODE	PUT READ CODE INTO A7 
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	1 
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
	LD	A1,8,A8	LOAD ECB RETCOD 
	RF(Z)	GOON2	GO ON IF CR=0
	LDK	A1,20	LOAD I/O-ERROR 0020
	RF	RET2
GOON2	EQU	* 
	LDR*	A1,A4	LOAD TOSSUT RC
	RF	RET2
	EJECT
* 
* GET VOLUME NAME TO A STRING VARIABEL
*  SYNTAX: CALL GETVOL,DSET,BUFFER,VOLNAM,RETCOD
* 
GETVOL	EQU	*
	CALL	T:FDSP	GET DSET ADDRESS TO A8 
	CALL	I:EVA0	GET BUFFER ADDRESS TO A9 
	ADKL	A9,1	MAKE BUFFER ADDRESS EVEN 
	ANKL	A9,/FFFE
	ST	A9,2,A8	STORE BUFFER ADDRESS IN DSET
	LDK	A6,6	REQUESTED LENGTH =6 
	ST	A6,4,A8	=> VOLUME NAME AS OUTPUT TEST STATUS
	CALL	I:EVA0	GET ADDRESS TO VOLNAM
	LDK	A7,/80	LOAD ORDER CODE 
*      A7    ORDER CODE FOR TEST STATUS 
*      A8    DSET ADDRESS 
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	1 
	AD	A12,-12,A13	RESTORE CREDIT RETADR 

	LD	A1,8,A8	LOAD RETURN CODE
	ANKL	A1,/F6FF	MASK OUT BIT FOR 1MB FLOPPY
			AND "RETRIES PERFORMED"
	RF(NZ)	RET2
	EJECT

*     STORE THE VOLUME NAME (OUTPUT FROM TEST STATUS) 
*     IN CALLERS BUFFER VOLNAM

	LD	A1,2,A8	LOAD BUFFER ADDRESS 
	LDK	A2,6	NO OF BYTES IN VOLUME NAME
LOOP	EQU	*
	LCR	A3,A1
	SCR	A3,A9
	ADK	A1,1 
	ADKL	A9,1
	SUK	A2,1 
	RB(P)	LOOP 
RET	EQU	* 
	LD	A1,8,A8	LOAD RETURN CODE
RET1	EQU	*
	ANKL	A1,/F6FF	MASK OUT BIT FOR 1MB FLOPPY
			AND "RETRIES PERFORMED"
RET2	EQU	*
	LDR	A6,A1	SAVE RETCOD
	CALL	I:EVA0
	STR	A6,A9	STORE RETURN-CODE
	LDR	A6,A6
	RF(Z)	RET3 
	LDK	A6,1 
RET3	EQU	*
	LD	A4,2,A13	GET STACK BASE 
	SC	A6,-2,A4	STORE CR ON STACK
RETUR	EQU	* 
	ABL	I:RT1
	EJECT
************************
*  CHANGE VOLUME NAME  *
************************
CHVOL	EQU	* 
	CALL	T:FDSP
	CM	10,A8	SECTOR NO. = 0
	CM	12,A8 
CHV100	LDKL	A1,256
	ST	A1,4,A8	STORE REQUESTED LENGTH
	CALL	I:EVA0
	ST	A9,2,A8	STORE BUFFER ADRESS 
	LDK	A7,/B7	LOCK
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	1 
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
	LD	A6,8,A8	GET RETURN CODE 
	LDK	A7,/81	BASIC READ
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	1 
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
	CALL	I:EVA0	GET VOLUME NAME
	EJECT
	LD	A7,2,A8	LOAD BUFFER POINTER 
	ML	4,32,A7	A1-A4 := TOSS DISC ID 
	SUKL	A1,TOSS1	CHECK IF TOSS FORMATTED
	RF(NZ)	NOTOSS	-NO
	SUKL	A2,TOSS2
	RF(NZ)	NOTOSS
	SUKL	A3,TOSS3
	RF(NZ)	NOTOSS
	SUKL	A4,TOSS4
	RF(NZ)	NOTOSS
	EJECT

******************************* 
* REPLACE CURRENT VOLUME NAME * 
******************************* 
	LDR	A1,A7	THE DISC IS TOSS FORMATTED!
	LDK	A2,6 
CHV200	LCR	A3,A9	READ CHARACTER 
	SCR	A3,A1	STORE CHARACTER
	ADK	A1,1 
	ADKL	A9,1
	SUK	A2,1 
	RB(NZ)	CHV200	IF NOT FINISHED
	LDK	A7,/85	WRITE BASIC 
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	1 
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
	LDK	A7,/80	TEST STATUS 
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	1 
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
	LDK	A1,0	INDICATE TOSS FORMATTED 
	RF	CHV300
NOTOSS	EQU	*	NOT A TOSS FORMATTED DISC
	LDK	A1,/42	LOAD RETURN CODE
CHV300	EQU	*
	LDR	A6,A6
	RF(NZ)	CHV400	JUMP IF NOT TO BE UNLOADED 
	LDK	A7,/B8	UNLOCK
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	1 
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
CHV400	EQU	*
	LDR	A1,A1	TOSS DISC? 
	RB(NZ)	RET1	-NO, USE EXISTING A1-VALUE 
	RB	RET 
	EJECT
* 
*        CALL WRSECT,DSET,RECNO,BUF,RETCOD
* 
*            DSET      EVENT CONTROL BLOCK
*            RECNO     REALATIV SECTOR NO WITHIN THE FILE 
*            BUF       BUFFER 
*            RETCOD    RETURN CODE FROM LKM 
* 
* 
WRSECT	EQU	*
	LDKL	A11,/85	BASIC WRITE 
	RF	RDS000
* 
* 
* 
*        CALL RDSECT,DSET,RECNO,BUF,RETCOD
*            DSET      EVENT CONTROL BLOCK
*            RECNO     REALATIV SECTOR NO WITHIN THE FILE 
*            BUF       BUFFER 
*            RETCOD    RETURN CODE FROM LKM 
* 
* 
RDSECT	EQU	*
	LDKL	A11,/81	BASIC READ
RDS000	EQU	*
	CALL	T:FDSP
	CALL	I:EVA0
	LDR*	A1,A9 
	CM	10,A8 
	ST	A1,12,A8	STORE SECTOR NUMBER
	EJECT
RDS100	LDKL	A1,256
	ST	A1,4,A8	STORE REQUESTED LENGTH
	CALL	I:EVA0
	ST	A9,2,A8	STORE BUFFER ADRESS 
	LDK	A7,/B7	LOCK
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	1 
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
	LD	A6,8,A8	GET RETURN CODE 
	LDR	A7,A11 
*      A7     ORDER CODE
*      A8     DSET ADDRESS
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	1 
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
	LDK	A1,0	NO FORMAT ERROR!
	RB	CHV300
	EJECT
* 
*      CALL WRITDK,DSET,FILECODE,BUF,LEN,RECNO,RETCOD 
*            RETCOD    RETURN CODE FROM LKM 
* 
*            DSET      EVENT CONTROL BLOCK
*            FILECODE  FILE NUMBER
*            BUF       BUFFER 
*            LEN       REQUESTED LENGTH 
*            RECNO     REALATIV SECTOR NO WITHIN THE FILE 
* 
WRITDK	EQU	*
	LDKL	A11,/95	ORDER CODE
	RF	READ00
* 
*      CALL READDK,DSET,FILECODE,BUF,LEN,RECNO,RETCOD 
* 
*            DSET      EVENT CONTROL BLOCK
*            FILECODE  FILE NUMBER
*            BUF       BUFFER 
*            LEN       REQUESTED LENGTH 
*            RECNO     RELATIVE SECTOR NO WITHIN THE FILE 
*            RETCOD    RETURN CODE FROM LKM 
* 
READDK	EQU	*
	LDKL	A11,/91	ORDER CODE
READ00	EQU	*
	CALL	T:FDSP	GET DSET ADDRESS TO A8 
	EJECT
*    GET PARAMETERS FROM PARAMETER LIST AND STORE 
*    THEM IN DSET 
	CALL	I:EVA0	FILE CODE
	LDR*	A6,A9 
	SC	A6,1,A8 
	CALL	I:EVA0	BUFFER ADDRESS 
	ST	A9,2,A8 
	CALL	I:EVA0	RECORD LENGTH
	LDR*	A6,A9 
	ST	A6,4,A8 
	CALL	I:EVA0	RECORD NO
	LDR*	A6,A9 
	CALL	T:BCDB	COVERT TO TWO BINARYS
	ST	A2,12,A8	LEAST SIGNIFICANT
	ST	A1,10,A8	MOST SIGNIFICANT 
READ20	EQU	*
	LDR	A7,A11 
*      A7     ORDER CODE
*      A8     DSET ADDRESS
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	15
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
READ40	EQU	*
	ABL	RET
	EJECT
* 
*      CALL  CLOSEF,DSET,FILECODE,BUFF,RECNO,RETCOD 
* 
*             DSET      EVENT CONTROL BLOCK 
*             FILECODE  FILE NUMBER 
*             BUF       FILE PARAMETER BUFFER 
*             RECNO     NUMBER OF RECORDS IN SPEC. FILE 
* 
*            RETCOD    RETURN CODE FROM LKM 
CLOSEF	EQU	*
	LDR	A11,A14
	RF	OPENF0
CLOS10	EQU	*
	CALL	T:BCDB	CONVERT TO TWO BINARYS 
	LD	A6,2,A8	ADR TO FPB
	ST	A1,58,A6	LEAST SIGNIFICANT
	ST	A2,60,A6	MOST SIGNIFICANT 
	LDR*	A6,A10	GET STORED FILECODE
	SC	A6,1,A8	PUT INTO ECB
	LDKL	A11,/A2	LOAD ORDER CODE 
	RB	READ20
	EJECT
* 
*       CALL OPENF,DSET,FILECODE,BUF,FILE,VOLUME,RETCOD 
* 
*              DSET      EVENT CONTROL BLOCK
*              FILECODE  FILE NUMBER
*              BUF       FILE PARAMETER BUFFER
*              FILE      FILE NAME
*              VOLUME    VOLUME NAME
*            RETCOD    RETURN CODE FROM LKM 
* 
OPENF	EQU	* 
	SUR	A11,A11
OPENF0	EQU	*
	CALL	T:FDSP	GET DSET ADDRESS TO A8 
	CALL	I:EVA0	SAVE ADDRESS TO FILE CODE
	LDR	A10,A9 
	CALL	I:EVA0	GET ADDRESS TO FPB(FILE PARAM.BUF) 
	ADKL	A9,1	AND MAKE SURE IT IS EVEN 
	ANKL	A9,/FFFE
	LDR	A6,A9	SAVE ADDRESS TO FPB
	ST	A9,2,A8	STORE THE ADDRESS IN DSET 
	LDK	A3,80	NO OF BYTES IN FPB 
	LDR	A2,A9	ADDRESS TO FPB 
OPEN00	EQU	*
	CMR	A2	STORE ZERO IN FPB 
	ADK	A2,2	INCREACE ADDRESS
	SUK	A3,2 
	RB(NZ)	OPEN00
	EJECT
* 
*     GET FILE NAME AND STORE IT IN FPB 
*      A3 CONTAINES FPB ADDRESS 
	CALL	I:EVA0
	LDR	A11,A11
	RB(NZ)	CLOS10
	ADK	A6,8	ADDRESS TO FILE NAME IN FPB 
	LDK	A4,8	NO OF CHAR IN FILE NAME 
OPEN20	EQU	*
	LCR	A3,A9	GET ON CHAR
	SCR	A3,A6	STORE ONE CHAR IN FPB
	ADKL	A9,1
	ADK	A6,1 
	SUK	A4,1 
	RB(NZ)	OPEN20
	EJECT
* 
*    GET VOLUME NAME AND STORE IT IN FPB
	CALL	I:EVA0
	ADK	A6,2	ADDRESS TO VOLUME IN FPB
	LDK	A4,6	NO OF CHAR IN VOLUME NAME 
OPEN40	EQU	*
	LCR	A3,A9
	SCR	A3,A6	STORE ONE CHAR IN FPB
	ADKL	A9,1
	ADK	A6,1 
	SUK	A4,1 
	RB(NZ)	OPEN40
	LDK	A7,/A1	LOAD ORDER CODE 
	SU	A12,-12,A13	SAVE RETADRESS IF DISKPAGING
	LKM
	DATA	15
	AD	A12,-12,A13	RESTORE CREDIT RETADR 
*   STORE FILE CODE IN FILE CODE BUFFER 
	LC	A3,1,A8 
	STR	A3,A10 
	RB	READ40	CHEC ON ERROR CODE 
	EJECT
* 
*        CONVERT A BCD-ITEM TO TWO BINARY-ITEMS 
* 
*        CALL  BCDBIN,BCD,BINMS,BINLS 
* 
BCDBIN	EQU	*
	CALL	I:EVA0	GET AD TO BCD
	CALL	T:BCDB	CONVERT WITH RESULT IN A1,A2 
	STR	A1,A14	SAVE A1 ON STACK
	ST A2,-2,A14	SAVE A2 ON STACK
	SUKL	A14,4	UPDATE STACK-POINTER
	CALL	I:EVA0	GET ADR TO BINMS 
	LD	A1,4,A14	GET VALUE OF BINMS 
	STR	A1,A9	PUT VALUE IN BINMS 
	CALL	I:EVA0	GET AD TO BINLS
	LD	A2,2,A14	GET VALUE OF BINLS 
	STR	A2,A9	PUT VALUR IN BINLS 
	ADKL	A14,4	UPDATE STACKPOINTER 
	ABL	I:RT1	RETURN TO CALL-MODULE
	EJECT
* 
*        CONVERT TWO BINARY-ITEMS TO A BCD-ITEM 
* 
*        CALL  BINBCD,BINMS,BINLS,BCD 
* 
BINBCD	EQU	*
	CALL	I:EVA0	GET ADR OF BINMS 
	LDR*	A9,A9	GET VALUE OF BINMS
	STR	A9,A14	SAVE A9 ON STACK
	SUKL	A14,2	UPDATE STACK-POINTER
	CALL	I:EVA0	GET ADR OF BINLS 
	LDR*	A9,A9	GET VALUE OF BINLS
	STR	A9,A14	SAVE A9 ON STACK
	SUKL	A14,2	UPDATE STACK-POINTER
	CALL	I:EVA0	GET ADR TO BCD 
	ADKL	A14,4	UPDATE STACKPOINTER 
	LDR*	A2,A14	GET VALUE OF BINMS 
	LD	A1,-2,A14	GET VALUE OF BINLS
	CALL	T:BINB	CONVERT WITH BCD UPDATED 
	ABL	I:RT1	RETURN TO CALLING MODULE 
	EJECT
RCGET	EQU	* 
	CALL	I:EVA0	GET PARAM. ONE 
	LDR*	A4,A9	GET CONTENTS OF PAR1
	CALL	I:EVA0	GET PARAM. TWO 
	LDKL	A2,/396C	INSTRUCTION SRL A1,12
	LDK	A3,4	LOOPCOUNTER 
RC10	EQU	*
	LDR	A1,A4
	EXR	A2	EXECUTE INSTRUCTION 
	ANK	A1,/F	PICK ONE NUMERIC 
	CWK	A1,9	CONVERT BIN -> ASCII
	RF(G)	RC20	CONVERT BIN -> ASCII
	ADK	A1,/30	        -"- 
	RF	RC30	        -"-
RC20	EQU	*	        -"-
	ADK	A1,/37	        -"- 
RC30	EQU	*	        -"-
	SCR	A1,A9	STORE IN PARAM.2 
	ADKL	A9,1
	SUK	A2,4	MODIFY SHIFTINSTR.
	SUK	A3,1	LOOP-COUNTER
	RB(P)	RC10	JMP CR>0
	ABL	I:RT1
	EJECT
* 
* 
*   GET DIMENSION OF INDEXED VARIABLE AND LENGTH
* 
*   SYNTAX:   CALL    GETIND,ITEM(W1),LENGTH,DIMENSION
* 
*                     ITEM(W1)       = CURRENT ITEM 
*                     LENGTH         = BIN HOLDING ITEM LENGTH
*                     DIMENSION      = BIN HOLDING NO. OF ELEMENTS
* 
* 
* 
GETIND	EQU	*
	CALL	I:EVA0	ADDRESS TO ITEM
	LD	A10,-6,A14	READ DIMENSION STORED BYE I:EVA
	LDR	A7,A5	COPY END ADDRESS 
	SUR	A7,A9	CALCULATE ITEM LENGTH
	CALL	I:EVA0	ADDRESS TO LENGTH ITEM 
	STR	A7,A9	STORE LENGTH 
	CALL	I:EVA0	ADDRESS TO DIMENSION ITEM
	STR	A10,A9	STORE DIMENSION 
	ABL	I:RT1

	END

Full view