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

⟦fe02e51ed⟧

    Length: 4682 (0x124a)
    Notes: pts_type(SC)
    Names: »TNDCAB.SC«

Derivation

└─⟦f350e1b7a⟧ Bits:30009678 Philips computer tape "600219"
    └─⟦this⟧ »PTSDEMO/TNDCAB.SC« 

PTS(SC)

	IDENT	TNDCAB	TND DISPENSE MAIN PROCEDURE 
	DDUM	DEMODD
************************************************************************
* 
*          PROCEDURE-NAME:
*                  TNDCAB 
* 
*          FUNCTIONAL DESCRIPTION:
*                  THIS ROUTINE IS THE START OF THE INTERFACE BETWEEN 
*                  THE DEMO-PACKAGE AND THE TND CONTROL ROUTINES
*                  FROM THE SVENSKA HANDELSBANKEN TND-PACKAGE 
* 
*                  IT:
*                    -COMPUTES THE NUMBER OF NOTES TO DELIVER PER 
*                     CASSETTE IN MAXIMUM SIZE OF BUNDLES OR
*                    -ASKES THE CUSTOMER FOR THE NUMBER OF NOTES
*                     PER DENOMINATION
*                    -PASSES CONTROL TO THE TND ROUTINES
* 
*         PROCEDURES USED:
* 

*                  XBFMT   DISPLAY SCREEN FORMAT AND GET INPUT
*                  XEERR   DISPLAY ERROR/GET REPLY
*                  TNDPAY   DISPENSE MONEY FROM THE TND 
* 
************************************************************************
	PDIV 
	ENTRY	TNDCAB 
	EXPROC	XBFMT 
	EXPROC	XEERR 
	EXPROC	TNDPAY
	ENTRY	SPAP34 
TNDCAB	PROC 
	TBF	SBTND,CAB999 
	MOVE	WW1,KW1 
CAB010
	CBG	WW1,KW4,CAB020	END-OF-LOOP 
	MOVE	TNDREG(WW1),=D'0'	INIT NUMBER OF NOTES
	ADD	WW1,KW1	..TO DELIVER PER CASSETTE
	B	CAB010 
CAB020
	MOVE	WDEC1,=D'0' 
	MOVE	WW1,KW1 
CAB021
	CBG	WW1,KW4,CAB025 
	DIV	NOTES(WW1),=D'100' 
	ADD	WW1,KW1
	B	CAB021 
CAB025
	MOVE	TNDCIX,KW0
	PERF	XBFMT,=W'91'	DISPLAY SELECTION FORMAT 
	CBNE	TNDCIX,KW0,CAB026 
	MOVE	WDEC1,=D'0' 
CAB026
	MOVE	WW1,KW1 
CAB027
	CBG	WW1,KW4,CAB029 
	MUL	NOTES(WW1),=D'100' 
	ADD	WW1,KW1
	B	CAB027 
CAB029
	TBT	SBCANCEL,CAB999	...AND GET INPUT 
	MOVE	WDEC2,WDEC1	TOTAL AMOUNT SELECTED 
	MOVE	WDEC1,TDAMOUNT	...IS IN WDEC1, COMPUTE
	SUB	WDEC1,WDEC2	...THE DIFFERENCE
	MOVE	WW1,KW1 
	MOVE	WDEC2,=D'0' 
CAB030
	CBG	WW1,KW4,CAB040	DID WE HANDLE ALL CASSETTES?
	CBE	WDEC1,=D'0',CAB040	...NO, IS AMOUNT ZERO?
	MOVE	IDAMT1,WDEC1	...NO, CONTINUE
	DIV	IDAMT1,NOTES(WW1)	COMPUTE NUMBER OF NOTES OF 
	ADD	TNDREG(WW1),IDAMT1	UPDATE DISPENSE QUANTITIES
	MOVE	WDEC2,NOTES(WW1)	...CURRENT DENOMINATION
	MUL	WDEC2,IDAMT1	COMPUTE REMAINDER AND 
	SUB	WDEC1,WDEC2	...AND STORE IT
	ADD	WW1,KW1	POINT TO NEXT DENOMINATION 
	B	CAB030	REPEAT
CAB040
	MOVE	WDEC2,=D'0'	INIT PARAMATERS FOR 
	MOVE	WW1,KW0	...TND CALL 
	MOVE	WW2,KW0 
	MOVE	WW3,KW0 
CAB050
	MOVE	TNDBFF,=C' '	INIT BUFFER
	PERF	TNDPAY,WDEC1,TNDSET,WW1,WW2,WW3,WDEC2,WCSTRG6,TNDBFF
	B	CAB999	STOP
	B	CAB060	RET=2 
	B	CAB065	RET=4 
CAB060
	MOVE IDAMT1,TDAMOUNT	SAVE TDAMOUNT 
	SUB	TDAMOUNT,WDEC1	(RET=2) 
	B	CAB070	...REJECTED NOTES 
CAB065
	MOVE	IDAMT1,TDAMOUNT	SAVE TDAMOUNT 
	SUB	TDAMOUNT,WDEC1	(RET=4) 
	PERF	XBFMT,=W'77'	...OK, MESSAGE 'REMAINING...'
	MOVE	TDAMOUNT,IDAMT1	RESTORE TDAMOUNT
	B	CAB999	EXIT
CAB070
	PERF	XEERR,=W'81',KW3	DISPLAY ERROR, STOP
	MOVE TDAMOUNT,IDAMT1	RESTORE TDAMOUNT
CAB999
	CLEAR	SBCANCEL 
	RET
	PEND 
***************************** 
* 
*      PROCEDURE USED BY KEYBOARD INPUT (SCREEN MANAGEMANT) 
*      CHECKS IF NUMBER OF NOTEST ENTERED DON7T EXCEED TOTAL
*      AMOUT TO DELEIVER
***************************** 
SPAP34	PROC	XWRET 
	PBIN	XWRET 
SP34000 
	GETABX	TNDCIX	GET FIELD NUMBER (=INDEX)
	MOVE	TNDREG(TNDCIX),SPINPUT	CONVERT TO DECIMAL 
	MOVE	WW1,KW1 
	MOVE	WDEC1,=D'0' 
	MOVE	WDEC2,=D'0' 
SP34010 
	CBG	WW1,TNDCIX,SP34020	LC > CURRENT INDEX
	MOVE	WDEC2,TNDREG(WW1) 
	MUL	WDEC2,NOTES(WW1)	COMPUTE AMOUNT FOR THIS 
	MUL	WDEC2,=D'100'
	ADD	WDEC1,WDEC2	DENOMINATION AND ADD TO
	ADD	WW1,KW1	TOTAL, POINT TO NEXT 
	B	SP34010
SP34020 
	CBG	WDEC1,TDAMOUNT,SP34030	DISPENSE EXCEEDS LIMIT? 
	ADD	TNDCIX,KW1 
	RET
SP34030 
	MOVE	SPBINW4,=W'92'	'DISPENSE AMOUNT OVERDRAWN'
	MOVE	XWRET,=W'1'	BY QUOTATION
	RET
	PEND 
	END

Full view