|
|
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: 23338 (0x5b2a)
Notes: pts_type(SC)
Names: »QMISC.SC«
└─⟦35fda6e03⟧ Bits:30009701 Philips computer tape "BARCLAY"
└─⟦this⟧ »DEMO6800/QMISC.SC«
└─⟦e276fd206⟧ Bits:30009696 Philips computer tape "600413"
└─⟦this⟧ »DEMO6800/QMISC.SC«
└─⟦f350e1b7a⟧ Bits:30009678 Philips computer tape "600219"
└─⟦this⟧ »PTSDEMO/QMISC.SC«
IDENT QMISC MISCELANEOUS SUBROUTINES
DDUM DEMODDIV
PDIV
ENTRY QAFNKY
ENTRY QBSTKY
ENTRY QCGUWB
ENTRY QDFUWB
ENTRY QENTRS
ENTRY QFLTRS
ENTRY QGATYP
ENTRY QHSPKY
EXPROC XBFMT
************************************************************************
* *
* PROCEDURE: QAFNKY*
* PARAMETERS: *
* XWINDEX (UPDATE): INDEX IN THE KEYTABLE*
* XWADAPT (INPUT): ADAPTION VALUE FOR XWINDEX*
* XWKTBLNG (INPUT): LENGTH OF ONE HALF OF THE KEYTABLE*
* FUNCTIONAL DESCRIPTION:*
* QAFNKY CHECKS THE EOI-KEY ENTERED BY THE OPERATOR AFTER A*
* KI-INSTRUCTION.*
* UPON ENTRY XWINDEX CAN HAVE ONE OF THE FOLLOWING VALUES:*
* V: VALUE OF XWINDEX MEANS:*
* -8 =< V =< -1 KEYLOCK TURNED ON 6236/71/72-KB*
* V = 0 POWER FAILURE*
* 1 =< V =< XWKTBLNG 6234/31-KEYBOARD AND KEY 1 ON*
* OR 6236/71/72-KEYBOARD*
* XWKTBLNG+1 =< V =< 2*XWKTBLNG 6234/31-KEYBOARD AND KEY 2 ON*
* OTHER VALUES UNDEFINED KEY*
* *
* THE ROUTINE QBSTKY CHECKS WHETHER OR NOT KEYLOCK ON A*
* 6236/71/72-KB HAS BEEN TURNED AND IF SO WILL SET SBKEY1*
* AND SBKEY2 ACCORDINGLY AND SET XWINDEX TO XWADAPT.*
* IF XWINDEX IS NOT IN THE RANGE 1....2*XWKTBLNG THEN*
* XWINDEX IS SET TO XWADAPT AND CONTROL IS RETURNED.*
* ELSE IF A 6234-TYPE KEYBOARD IS USED THEN XWINDEX IS ADAPTED*
* TO POINT INTO THE FIRST HALF OF THE KEYTABLE AND*
* SBKEY1 AND SBKEY2 ARE SET TO THE RIGHT VALUES.*
* *
* VARIABLES USED:*
* SB34KB: 6234/31-KEYBOARD ?*
* SBKEY1: IS KEY 1 ON ?*
* SBKEY2: IS KEY 2 ON ?*
* WORKVARIABLE:*
* WW1*
* *
************************************************************************
QAFNKY PROC XWINDEX,XWADAPT,XWKTBLNG
PBIN XWINDEX,XWADAPT,XWKTBLNG
QA000
**
* CHECK KEYLOCK TURNED ON 6236/71/72*
**
PERF QBSTKY,XWINDEX,XWADAPT
**
* CHECK IF INDEX POINTS INTO THE KEYTABLE*
**
CBL XWINDEX,=W'1',QA900 INDEX NOT IN RANGE
MOVE WW1,XWKTBLNG
MUL WW1,=W'2' FULL KEYTABLE LENGTH
CBG XWINDEX,WW1,QA900 INDEX NOT IN RANGE
**
* INDEX POINTS INTO THE KEYTABLE*
* CHECK KEYBOARD TYPE*
**
CBG XWINDEX,XWKTBLNG,QA300 6231/34 KEYBOARD WITH KEY 2 ON
TBF SB34KB,QA999 6236/71/72-KEYBOARD
**
* 6231/34 KEYBOARD,*
* CHECK KEYLOCK TURNED*
*
QA300
SET SB34KB SET KB TYPE AT TRMSTT
CBG XWINDEX,XWKTBLNG,QA500 KEY2 IS ON
*
* KEY1 IS ON
*
QA400
TBT SBKEY1,QA999 KEY1 WAS ALREADY ON
SET SBKEY1
CLEAR SBKEY2
B QA999
*
* KEY2 IS ON
*
QA500
SUB XWINDEX,XWKTBLNG ADJUST INDEX IN KEYTABLE
TBT SBKEY2,QA999 KEY2 WAS ALREADY ON
SET SBKEY2
CLEAR SBKEY1
B QA999
*
* IF A KEYLOCK HAS BEEN TURNED,
* ADAPT THE INDEX IN THE KEYTABLE
*
QA900
MOVE XWINDEX,XWADAPT ADAPT INDEX IN KEYTABLE
QA999
RET
PEND
************************************************************************
* *
* PROCEDURE: QBSTKY*
* PARAMETERS: *
* XWINDEX (UPDATE): INDEX RETURNED BY KI-INSTRUCTION.*
* XWADAPT (INPUT): ADAPT VALUE FOR XWINDEX.*
* FUNCTIONAL DESCRIPTION:*
* IF KEYLOCK HAS BEEN TURNED ON 6236/71/72-KEYBOARD THEN*
* XWINDEX CONTAINS ONE OF THE FOLLOWING VALUES:*
* -8: KEY 1 TURNED ON -4: KEY 1 TURNED OFF*
* -7: KEY 2 TURNED ON -3: KEY 2 TURNED OFF*
* -6: KEY 3 TURNED ON -2: KEY 3 TURNED OFF*
* -5: KEY 4 TURNED ON -1: KEY 4 TURNED OFF*
* SBKEY1 AND SBKEY2 MUST BE SET ACCORDING TO THE KEYLOCK TURNED *
* AND IF A KEYLOCK HAS BEEN TURNED XWINDEX MUST BE SET TO XWADAPT*
* *
* VARIABLES USED:*
* SB34KB: 6234/31-KEYBOARD ?*
* SBKEY1: IS KEY 1 ON ?*
* SBKEY2: IS KEY 2 ON ?*
* WORKVARIABLE:*
* WW1*
* *
************************************************************************
QBSTKY PROC XWINDEX,XWADAPT
PBIN XWINDEX,XWADAPT
MOVE WW1,XWINDEX CONVERT TO BINARY
ADD WW1,=W'9'
IB WW1,QB100,QB200,QB900, C
QB900,QB500,QB600,QB900,QB900
*
* NO KEYLOCK TURNED
*
B QB999
QB100
SET SBKEY1
B QB900
QB200
SET SBKEY2
B QB900
QB500
CLEAR SBKEY1
B QB900
QB600
CLEAR SBKEY2
**
* IF A KEYLOCK HAS BEEN TURNED,*
* ADAPT THE INDEX IN THE KEYTABLE*
**
QB900
MOVE XWINDEX,XWADAPT
QB999
RET
PEND
************************************************************************
* *
* PROCEDURE: QCGUWB*
* FUNCTIONAL DESCRIPTION:*
* TRY TO GET A SET OF FREE USER WORKBLOCKS.*
* IF FREE UWB'S HAVE BEEN FOUND, THEY ARE RESERVED BY SETTING*
* THE BOOLEAN 'SBUSEDWB' OF THAT SET OF UWB'S.*
* NWUWBNR WILL THEN CONTAIN THE NUMBER OF THE UWB'S GRABBED.*
* IF NO UWB'S ARE AVAILABLE, NWUWBNR IS SET TO ZERO.*
* *
* VARIABLES USED:*
* NWUWBNR: WILL CONTAIN THE NUMBER OF THE UWB'S GRABBED.*
* SBUSEDUWB: BOOLEAN TO INDICATE WHETHER OR NOT THE UWB'S*
* WITH A CERTAIN NUMBER ARE USED OR NOT.*
* *
************************************************************************
QCGUWB PROC
QC000
MOVE NWUWBNR,=W'0'
**
* TRY NEXT USER WORK BLOCK*
**
QC100
ADD NWUWBNR,=W'1'
USE UBF,NWUWBNR
BERR QC500 NO MORE UWB'S
TBF SBUSEDWB,QC400 UWB NOT IN USE, GRAB IT
B QC100 TRY NEXT UWB
**
* GET OTHER USER WORK BLOCKS AS WELL*
**
QC400
SET SBUSEDWB
USE UCY,NWUWBNR
USE UIF,NWUWBNR
USE UOP,NWUWBNR
USE UA1,NWUWBNR
USE UA2,NWUWBNR
USE UT1,NWUWBNR
USE UT2,NWUWBNR
USE UQQ,NWUWBNR
B QC999
**
* NO FREE UWB'S*
**
QC500
MOVE NWUWBNR,=W'0' INDICATE NO FREE UWB'S
QC999
RET
PEND
************************************************************************
* *
* PROCEDURE: QDFUWB*
* FUNCTIONAL DESCRIPTION:*
* FREE TGHE UWB'S RESERVED BEFORE BY CLEARING SBUSEDWB.*
* *
************************************************************************
QDFUWB PROC
QD000
CLEAR SBUSEDWB
QD999
RET
PEND
************************************************************************
* *
* PROCEDURE: QENTRS*
* PARAMETER:*
* XDTRS (UPDATE): A TRANSACTION NUMBER BETWEEN 1 AND 8.*
* FUNCTIONAL DESCRIPTION:*
* CALCULATE THE NEXT TRANSACTION NUMBER.*
* THE TRANSACTIONS BELONGING TO AN ACCOUNT ARE NUMBERED FROM*
* 1 TO 8 AND ARE USED CIRCULARLY.*
* TO GET THE NEXT TRANSACTION NUMBER, ADD 1 TO XDTRS AND IF NOW*
* XDTRS = 9, RESET XDTRS TO 1.*
* *
************************************************************************
QENTRS PROC XDTRS
PBCD XDTRS
QE000
ADD XDTRS,=D'1'
CBL XDTRS,=D'9',QE999 OKE
MOVE XDTRS,=D'1' NEXT SEQ NR. IS 1
QE999
RET
PEND
************************************************************************
* *
* PROCEDURE: QFLTRS*
* PARAMETER:*
* XDTRS (UPDATE): A TRANSACTION NUMBER BETWEEN 1 AND 8.*
* FUNCTIONAL DESCRIPTION:*
* CALCULATE THE LAST TRANSACTION NUMBER.*
* TO GET THE LAST TRANSACTION NUMBER, SUBTRACT 1 FROM XDTRS AND*
* IF NOW XDTRS = 0, RESET XDTRS TO 8.*
* *
************************************************************************
QFLTRS PROC XDTRS
PBCD XDTRS
QF000
SUB XDTRS,=D'1'
CBG XDTRS,=D'0',QF999 OKE
MOVE XDTRS,=D'8' LAST SEQ NR. IS 8
QF999
RET
PEND
************************************************************************
* *
* PROCEDURE: QGATYP*
* PARAMETER:*
* XDACTNR (INPUT): UNSHIFTED ACCOUNT NUMBER.*
* FUNCTIONAL DESCRIPTION:*
* IF THE UNSHIFTED ACCOUNT NUMBER IN XDACTNR IS EVEN THEN IT*
* IS A CHEQUE ACCOUNT NUMBER AND SBCHQACT IS SET TO TRUE *
* ELSE IT IS A SAVINGS ACCOUNT NUMBER.*
* *
* VARIABLES USED:*
* SBCHQACT: IS ACCOUNT A CHEQUE ACCOUNT ?*
* WORKVARIABLE:*
* WDEC1*
* *
************************************************************************
QGATYP PROC XDACTNR
PBCD XDACTNR
QG000
CLEAR SBCHQACT
* *
* TEST ACCOUNTNUMBER IS ODD/EVEN*
* *
MOVE WDEC1,XDACTNR
DIV WDEC1,=D'2'
MUL WDEC1,=D'2'
CBNE WDEC1,XDACTNR,QG200 NUMBER IS ODD
SET SBCHQACT EVEN NUMBER - CHEQUE ACCOUNT
QG200
RET
PEND
************************************************************************
* *
* PROCEDURE: QHSPKY*
* PARAMETERS:*
* XWINDEX (UPDATE): INDEX IN THE SCREEN-MANAGEMENT KEYTABLE.*
* XWADAPT (INPUT): ADAPT-VALUE FOR XWINDEX.*
* XWKTBLNG (INPUT): FULL SCREEN-MANAGEMENT KEYTABLE LENGTH.*
* FUNCTIONAL DESCRIPTION:*
* UPON ENTRY XWINDEX CAN HAVE THE FOLLOWING VALUES:*
* -8 =< V =< -1 KEYLOCK TURNED ON 6236-TYPE KEYBOARD.*
* THIS WILL BE HANDLED BY 'QBSTKY'.*
* V = 0 POWER FAILURE*
* 0 =< V =< XWKTBLNG-1 KEY LISTED IN THE KEYTABLE IS ENTERED.*
* OTHER VALUES ADAPT XWINDEX TO XWADAPT.*
* *
************************************************************************
QHSPKY PROC XWINDEX,XWADAPT,XWKTBLNG
PBIN XWINDEX,XWADAPT,XWKTBLNG
QH000
**
* CHECK KEYLOCK TURNED FOR 6236/71/72*
**
PERF QBSTKY,XWINDEX,XWADAPT
**
* CHECK KEY ENTERED*
* FIRST ADAPT THE INDEX FOR CALCULATION PURPOSES
* (THE DYKI INDEX IS DIFFERENT FROM THE KI INDEX)*
**
ADD XWINDEX,=W'1'
*
* CHECK IF INDEX POINTS INTO THE KEYTABLE
*
CBL XWINDEX,=W'1',QH900 INDEX NOT IN KEYTABLE
CBG XWINDEX,XWKTBLNG,QH900 INDEX NOT IN KEYTABLE
CBE XWINDEX,=W'1',QH900 BACKSPACE KEY ENTERED
**
* READJUST INDEX FOR SCREEN MANAGEMENT*
**
SUB XWINDEX,=W'1'
B QH999
*
* ADAPT INDEX IN THE KEYTABLE
*
QH900
MOVE XWINDEX,XWADAPT
QH999
RET
PEND
************************************************************************
END