|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 4682 (0x124a)
Notes: pts_type(SC)
Names: »TNDCAB.SC«
└─⟦f350e1b7a⟧ Bits:30009678 Philips computer tape "600219"
└─⟦this⟧ »PTSDEMO/TNDCAB.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