|
|
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: 4330 (0x10ea)
Notes: pts_type(SC)
Names: »DIVMOD.SC«
└─⟦c47f25c27⟧ Bits:30009688 Philips computer tape "600318"
└─⟦this⟧ »M:KMDV/DIVMOD.SC«
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
└─⟦this⟧ »TOSSWORK/DIVMOD.SC«
└─⟦fcfed1ed9⟧ Bits:30009706 Philips computer tape "M_167"
└─⟦this⟧ »M:167D/DIVMOD.SC«
IDENT DIVMOD REL 8.2 78-09-15 870105040820
* LREK 78-02-20
*
****************************************************
*
* PHILIPS TERMINAL SYSTEM PTS
*
* TOSS DATA MANAGEMENT
*
*
* LEVEL #1
*
* RELEASE #8
*
****************************************************
* THIS ROUTINE EXECUTES THE DIVIDE INSTRUCTION ON THE ALPHA COMPUTER
* CALLING SEQUENCE
* A1-A2= DIVIDEND
* A6 = DIVISOR
* CF A14,DIVMOD
*RETURN* RESUT IN A1-A2 ; A1= REMAINDER;A2= QUOTIENT
* CAUTION : REGISTERS A3,A4,A6,A7,A8 ARE CRUSHED.
ENTRY DIVMOD
DIVMOD LDR A8,A1 SAVE DIVIDEND SIGN
LDK A3,0
ADK A6,0
RF(0) END3 * IF DIVISOR IS NULL, OVREFLOW
ADK A1,0
RF(4) SIGNE
ANK.L A2,/7FFF
RF(0) END0 * IF DIVIDEND IS NULL, CR = 0
* THIS SEQUENCE GIVES THE OPERAND A POSITIVE VALUE
SIGNE LDK A7,0
LDK A4,16
ADK A1,0 *SIGN OF DIVIDEND
RF(6) DIVENP
ADK A3,1 * DIVIDEND IS NEGATIVE
C1R A1,A1
C1R A2,A2
ANK.L A2,X'7FFF'
ADK A2,1
RF(1) DIVENP
ADK A1,1
RF(5) END3
DIVENP ADK A6,0 *SIGN OF DIVISOR
RF(6) DIVORP
SUK A3,1 *NEGATIVE DIVISOR
C1R A6,A6
ADK A6,1
ADK A6,0 RESET IF OVERFLOW
RF(5) CASSPE
DIVORP CWR A1,A6
RF(1) END3
RF(0) CASSP1
SHIFT SUK A4,1 *A1 LESS THAN A6
RF(0) END
SLL A1,1
SLL A7,1
SLL A2,1
RF(6) *+4
ADK A1,1
ADK A1,0
RF(2) CASSP1
CWR A1,A6
RB(2) SHIFT
CASSP1 SUR A1,A6
ADK A7,1
RB(7) SHIFT
*THIS SEQUENCE RESTORES THE SIGN OF THE RESULTS
END LDR A2,A7
ADK A3,0
RF(0) NOSIGN
RF(2) AA DIVIDEND +. DIVISOR +
C1R A1,A1 *REMAINDER
ADK A1,1
AA C1R A2,A2 * QUOTIENT
ADK A2,1
*CAUTION THE NEXT INSTRUCTION IS ABSOLUTELY NECESSARY TO SET CR
* WHEN THE ADK A2,1 SET AN OVERFLOW CR EX (QUOTIENT=8000)
ADK A2,0
RF(2) END2
RF(0) END0
END3 ADK A3,/81
END2 ADK A3,/81
END1 ADK A3,/81
END0 SLL A3,1 **********************************
ANK.L A3,/0300
LDK.L A4,/FCFF
AN.S A4,2,A14
OR.S A3,2,A14 UPDATE CR IN PSW CALLING PROGRAM
RTN A14
NOSIGN ADK.L A8,0 TEST OF DIVIDEND SIGN
RF(6) BB
C1R A1,A1 DIVIDEND- .DIVISOR -
ADK A1,1 REMAINDER -
BB ADK A2,0
RB(0) END0
RB(2) END2
RB(7) END1
CASSPE LDR A7,A1
LDR A1,A2
CWK A1,/8000
RB(4) END
LDK A1,0
RB(7) END
END
0x0000…0036 (0, 0, 400) Head {h00=0x0032, h01=0x0050, text=» IDENT DIVMOD REL 8.2 78-09-15 870105040820 «, t00=0x0000, t01=0x0004}
0x0036…0050 Head {h00=0x0016, h01=0x0050, text=»* LREK 78-02-20 «, t00=0x0000, t01=0x003a}
0x0050…005a Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0000, t01=0x0054}
0x005a…0096 Head {h00=0x0038, h01=0x0050, text=»****************************************************«, t00=0x0000, t01=0x005e}
0x0096…00a0 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0000, t01=0x009a}
0x00a0…00c8 Head {h00=0x0024, h01=0x0050, text=»* PHILIPS TERMINAL SYSTEM PTS«, t00=0x0000, t01=0x00a4}
0x00c8…00d2 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0000, t01=0x00cc}
0x00d2…00f2 Head {h00=0x001c, h01=0x0050, text=»* TOSS DATA MANAGEMENT«, t00=0x0000, t01=0x00d6}
0x00f2…00fc Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0000, t01=0x00f6}
0x00fc…0106 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0000, t01=0x0100}
0x0106…0120 Head {h00=0x0016, h01=0x0050, text=»* LEVEL #1 «, t00=0x0000, t01=0x010a}
0x0120…012a Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0000, t01=0x0124}
0x012a…0144 Head {h00=0x0016, h01=0x0050, text=»* RELEASE #8 «, t00=0x0000, t01=0x012e}
0x0144…014e Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0000, t01=0x0148}
0x014e…018a Head {h00=0x0038, h01=0x0050, text=»****************************************************«, t00=0x0000, t01=0x0152}
0x018a…01d6 Head {h00=0x0048, h01=0x0050, text=»* THIS ROUTINE EXECUTES THE DIVIDE INSTRUCTION ON THE ALPHA COMPUTER«, t00=0x0000, t01=0x018e}
0x01d6…01f0 Head {h00=0x0016, h01=0x0050, text=»* CALLING SEQUENCE«, t00=0x0001, t01=0x004a}
0x01f0…021a Head {h00=0x0026, h01=0x0050, text=»* A1-A2= DIVIDEND «, t00=0x0001, t01=0x0064}
0x021a…0242 Head {h00=0x0024, h01=0x0050, text=»* A6 = DIVISOR«, t00=0x0001, t01=0x008e}
0x0242…0266 Head {h00=0x0020, h01=0x0050, text=»* CF A14,DIVMOD«, t00=0x0001, t01=0x00b6}
0x0266…02ac Head {h00=0x0042, h01=0x0050, text=»*RETURN* RESUT IN A1-A2 ; A1= REMAINDER;A2= QUOTIENT«, t00=0x0001, t01=0x00da}
0x02ac…02e6 Head {h00=0x0036, h01=0x0050, text=»* CAUTION : REGISTERS A3,A4,A6,A7,A8 ARE CRUSHED.«, t00=0x0001, t01=0x0120}
0x02e6…0306 Head {h00=0x001c, h01=0x0050, text=» ENTRY DIVMOD«, t00=0x0001, t01=0x015a}
0x0306…033e Head {h00=0x0034, h01=0x0050, text=»DIVMOD LDR A8,A1 SAVE DIVIDEND SIGN«, t00=0x0001, t01=0x017a}
0x033e…035c Head {h00=0x001a, h01=0x0050, text=» LDK A3,0«, t00=0x0002, t01=0x0022}
0x035c…037a Head {h00=0x001a, h01=0x0050, text=» ADK A6,0«, t00=0x0002, t01=0x0040}
0x037a…03be Head {h00=0x0040, h01=0x0050, text=» RF(0) END3 * IF DIVISOR IS NULL, OVREFLOW«, t00=0x0002, t01=0x005e}
0x03be…03dc Head {h00=0x001a, h01=0x0050, text=» ADK A1,0«, t00=0x0002, t01=0x00a2}
0x03dc…03fc Head {h00=0x001c, h01=0x0050, text=» RF(4) SIGNE «, t00=0x0002, t01=0x00c0}
0x03fc…041e Head {h00=0x001e, h01=0x0050, text=» ANK.L A2,/7FFF«, t00=0x0002, t01=0x00e0}
0x041e…0462 Head {h00=0x0040, h01=0x0050, text=» RF(0) END0 * IF DIVIDEND IS NULL, CR = 0 «, t00=0x0002, t01=0x0102}
0x0462…049e Head {h00=0x0038, h01=0x0050, text=»* THIS SEQUENCE GIVES THE OPERAND A POSITIVE VALUE «, t00=0x0002, t01=0x0146}
0x049e…04bc Head {h00=0x001a, h01=0x0050, text=»SIGNE LDK A7,0«, t00=0x0002, t01=0x0182}
0x04bc…04dc Head {h00=0x001c, h01=0x0050, text=» LDK A4,16 «, t00=0x0003, t01=0x0010}
0x04dc…0514 Head {h00=0x0034, h01=0x0050, text=» ADK A1,0 *SIGN OF DIVIDEND «, t00=0x0003, t01=0x0030}
0x0514…0534 Head {h00=0x001c, h01=0x0050, text=» RF(6) DIVENP«, t00=0x0003, t01=0x0068}
0x0534…0570 Head {h00=0x0038, h01=0x0050, text=» ADK A3,1 * DIVIDEND IS NEGATIVE«, t00=0x0003, t01=0x0088}
0x0570…0590 Head {h00=0x001c, h01=0x0050, text=» C1R A1,A1 «, t00=0x0003, t01=0x00c4}
0x0590…05b0 Head {h00=0x001c, h01=0x0050, text=» C1R A2,A2 «, t00=0x0003, t01=0x00e4}
0x05b0…05d4 Head {h00=0x0020, h01=0x0050, text=» ANK.L A2,X'7FFF'«, t00=0x0003, t01=0x0104}
0x05d4…05f2 Head {h00=0x001a, h01=0x0050, text=» ADK A2,1«, t00=0x0003, t01=0x0128}
0x05f2…0612 Head {h00=0x001c, h01=0x0050, text=» RF(1) DIVENP«, t00=0x0003, t01=0x0146}
0x0612…0630 Head {h00=0x001a, h01=0x0050, text=» ADK A1,1«, t00=0x0003, t01=0x0166}
0x0630…064e Head {h00=0x001a, h01=0x0050, text=» RF(5) END3«, t00=0x0003, t01=0x0184}
0x064e…0684 Head {h00=0x0032, h01=0x0050, text=»DIVENP ADK A6,0 *SIGN OF DIVISOR«, t00=0x0004, t01=0x0012}
0x0684…06a4 Head {h00=0x001c, h01=0x0050, text=» RF(6) DIVORP«, t00=0x0004, t01=0x0048}
0x06a4…06dc Head {h00=0x0034, h01=0x0050, text=» SUK A3,1 *NEGATIVE DIVISOR «, t00=0x0004, t01=0x0068}
0x06dc…06fc Head {h00=0x001c, h01=0x0050, text=» C1R A6,A6 «, t00=0x0004, t01=0x00a0}
0x06fc…071a Head {h00=0x001a, h01=0x0050, text=» ADK A6,1«, t00=0x0004, t01=0x00c0}
0x071a…075a Head {h00=0x003c, h01=0x0050, text=» ADK A6,0 RESET IF OVERFLOW«, t00=0x0004, t01=0x00de}
0x075a…077a Head {h00=0x001c, h01=0x0050, text=» RF(5) CASSPE«, t00=0x0004, t01=0x011e}
0x077a…079a Head {h00=0x001c, h01=0x0050, text=»DIVORP CWR A1,A6 «, t00=0x0004, t01=0x013e}
0x079a…07b8 Head {h00=0x001a, h01=0x0050, text=» RF(1) END3«, t00=0x0004, t01=0x015e}
0x07b8…07d8 Head {h00=0x001c, h01=0x0050, text=» RF(0) CASSP1«, t00=0x0004, t01=0x017c}
0x07d8…080e Head {h00=0x0032, h01=0x0050, text=»SHIFT SUK A4,1 *A1 LESS THAN A6«, t00=0x0005, t01=0x000c}
0x080e…082c Head {h00=0x001a, h01=0x0050, text=» RF(0) END «, t00=0x0005, t01=0x0042}
0x082c…084a Head {h00=0x001a, h01=0x0050, text=» SLL A1,1«, t00=0x0005, t01=0x0060}
0x084a…0868 Head {h00=0x001a, h01=0x0050, text=» SLL A7,1«, t00=0x0005, t01=0x007e}
0x0868…0886 Head {h00=0x001a, h01=0x0050, text=» SLL A2,1«, t00=0x0005, t01=0x009c}
0x0886…08a4 Head {h00=0x001a, h01=0x0050, text=» RF(6) *+4 «, t00=0x0005, t01=0x00ba}
0x08a4…08c2 Head {h00=0x001a, h01=0x0050, text=» ADK A1,1«, t00=0x0005, t01=0x00d8}
0x08c2…08e0 Head {h00=0x001a, h01=0x0050, text=» ADK A1,0«, t00=0x0005, t01=0x00f6}
0x08e0…0900 Head {h00=0x001c, h01=0x0050, text=» RF(2) CASSP1«, t00=0x0005, t01=0x0114}
0x0900…0920 Head {h00=0x001c, h01=0x0050, text=» CWR A1,A6 «, t00=0x0005, t01=0x0134}
0x0920…0940 Head {h00=0x001c, h01=0x0050, text=» RB(2) SHIFT «, t00=0x0005, t01=0x0154}
0x0940…0960 Head {h00=0x001c, h01=0x0050, text=»CASSP1 SUR A1,A6 «, t00=0x0005, t01=0x0174}
0x0960…097e (6, 0, 398) Head {h00=0x001a, h01=0x0050, text=» ADK A7,1«, t00=0x0006, t01=0x0004}
0x097e…099e Head {h00=0x001c, h01=0x0050, text=» RB(7) SHIFT «, t00=0x0006, t01=0x0022}
0x099e…09d6 Head {h00=0x0034, h01=0x0050, text=»*THIS SEQUENCE RESTORES THE SIGN OF THE RESULTS «, t00=0x0006, t01=0x0042}
0x09d6…09f6 Head {h00=0x001c, h01=0x0050, text=»END LDR A2,A7 «, t00=0x0006, t01=0x007a}
0x09f6…0a14 Head {h00=0x001a, h01=0x0050, text=» ADK A3,0«, t00=0x0006, t01=0x009a}
0x0a14…0a34 Head {h00=0x001c, h01=0x0050, text=» RF(0) NOSIGN«, t00=0x0006, t01=0x00b8}
0x0a34…0a70 Head {h00=0x0038, h01=0x0050, text=» RF(2) AA DIVIDEND +. DIVISOR + «, t00=0x0006, t01=0x00d8}
0x0a70…0aa0 Head {h00=0x002c, h01=0x0050, text=» C1R A1,A1 *REMAINDER«, t00=0x0006, t01=0x0114}
0x0aa0…0abe Head {h00=0x001a, h01=0x0050, text=» ADK A1,1«, t00=0x0006, t01=0x0144}
0x0abe…0aee Head {h00=0x002c, h01=0x0050, text=»AA C1R A2,A2 * QUOTIENT«, t00=0x0006, t01=0x0162}
0x0aee…0b0c (7, 0, 400) Head {h00=0x001a, h01=0x0050, text=» ADK A2,1«, t00=0x0007, t01=0x0004}
0x0b0c…0b54 Head {h00=0x0044, h01=0x0050, text=»*CAUTION THE NEXT INSTRUCTION IS ABSOLUTELY NECESSARY TO SET CR «, t00=0x0007, t01=0x0022}
0x0b54…0b96 Head {h00=0x003e, h01=0x0050, text=»* WHEN THE ADK A2,1 SET AN OVERFLOW CR EX (QUOTIENT=8000) «, t00=0x0007, t01=0x006a}
0x0b96…0bb4 Head {h00=0x001a, h01=0x0050, text=» ADK A2,0«, t00=0x0007, t01=0x00ac}
0x0bb4…0bd2 Head {h00=0x001a, h01=0x0050, text=» RF(2) END2«, t00=0x0007, t01=0x00ca}
0x0bd2…0bf0 Head {h00=0x001a, h01=0x0050, text=» RF(0) END0«, t00=0x0007, t01=0x00e8}
0x0bf0…0c10 Head {h00=0x001c, h01=0x0050, text=»END3 ADK A3,/81«, t00=0x0007, t01=0x0106}
0x0c10…0c30 Head {h00=0x001c, h01=0x0050, text=»END2 ADK A3,/81«, t00=0x0007, t01=0x0126}
0x0c30…0c50 Head {h00=0x001c, h01=0x0050, text=»END1 ADK A3,/81«, t00=0x0007, t01=0x0146}
0x0c50…0c96 Head {h00=0x0042, h01=0x0050, text=»END0 SLL A3,1 **********************************«, t00=0x0007, t01=0x0166}
0x0c96…0cb8 Head {h00=0x001e, h01=0x0050, text=» ANK.L A3,/0300«, t00=0x0008, t01=0x001c}
0x0cb8…0cda Head {h00=0x001e, h01=0x0050, text=» LDK.L A4,/FCFF«, t00=0x0008, t01=0x003e}
0x0cda…0cfc Head {h00=0x001e, h01=0x0050, text=» AN.S A4,2,A14«, t00=0x0008, t01=0x0060}
0x0cfc…0d42 Head {h00=0x0042, h01=0x0050, text=» OR.S A3,2,A14 UPDATE CR IN PSW CALLING PROGRAM«, t00=0x0008, t01=0x0082}
0x0d42…0d60 Head {h00=0x001a, h01=0x0050, text=» RTN A14 «, t00=0x0008, t01=0x00c8}
0x0d60…0d9c Head {h00=0x0038, h01=0x0050, text=»NOSIGN ADK.L A8,0 TEST OF DIVIDEND SIGN «, t00=0x0008, t01=0x00e6}
0x0d9c…0db8 Head {h00=0x0018, h01=0x0050, text=» RF(6) BB«, t00=0x0008, t01=0x0122}
0x0db8…0df2 Head {h00=0x0036, h01=0x0050, text=» C1R A1,A1 DIVIDEND- .DIVISOR -«, t00=0x0008, t01=0x013e}
0x0df2…0e24 Head {h00=0x002e, h01=0x0050, text=» ADK A1,1 REMAINDER - «, t00=0x0008, t01=0x0178}
0x0e24…0e42 Head {h00=0x001a, h01=0x0050, text=»BB ADK A2,0«, t00=0x0009, t01=0x001a}
0x0e42…0e60 Head {h00=0x001a, h01=0x0050, text=» RB(0) END0«, t00=0x0009, t01=0x0038}
0x0e60…0e7e Head {h00=0x001a, h01=0x0050, text=» RB(2) END2«, t00=0x0009, t01=0x0056}
0x0e7e…0e9c Head {h00=0x001a, h01=0x0050, text=» RB(7) END1«, t00=0x0009, t01=0x0074}
0x0e9c…0ebc Head {h00=0x001c, h01=0x0050, text=»CASSPE LDR A7,A1 «, t00=0x0009, t01=0x0092}
0x0ebc…0edc Head {h00=0x001c, h01=0x0050, text=» LDR A1,A2 «, t00=0x0009, t01=0x00b2}
0x0edc…0efe Head {h00=0x001e, h01=0x0050, text=» CWK A1,/8000«, t00=0x0009, t01=0x00d2}
0x0efe…0f1c Head {h00=0x001a, h01=0x0050, text=» RB(4) END «, t00=0x0009, t01=0x00f4}
0x0f1c…0f36 Head {h00=0x0016, h01=0x0050, text=» LDK A1,0 «, t00=0x0009, t01=0x0112}
0x0f36…0f54 Head {h00=0x001a, h01=0x0050, text=» RB(7) END «, t00=0x0009, t01=0x012c}
0x0f54…0f68 Head {h00=0x0010, h01=0x0050, text=» END«, t00=0x0009, t01=0x014a}
0x0f68…0f6c Head {h00=0x4004, h01=0x0000}
0x0f6c…0f70 00 09 01 5e ┆ ^┆
0x0f70…0f78 (10, 1, 8) 20 04 00 00 00 0a 00 04 ┆ ┆
0x0f78…0fc8 (11, 2, 362) 2c 41 36 5c 53 54 41 54 55 53 00 0a 01 84 00 10 00 50 5c 52 46 28 4e 29 5c 45 58 49 54 20 00 0b 00 12 00 1a 00 50 5c 4c 44 52 5c 41 31 2c 41 31 5c 52 45 54 55 52 4e 20 43 4f 44 45 00 0b 00 26 00 1e 00 50 5c 52 42 28 4e 45 29 5c 45 4e 44 49 ┆,A6 STATUS P RF(N) EXIT P LDR A1,A1 RETURN CODE & P RB(NE) ENDI┆
0x0fc8…1018 4f 5c 59 45 53 20 45 4e 44 20 49 2f 4f 20 00 0b 00 44 00 0e 00 50 5c 41 42 4c 5c 4c 44 52 45 47 00 0b 00 66 00 12 00 50 45 58 49 54 5c 41 42 4c 5c 54 44 49 53 50 00 0b 00 78 00 0a 00 50 5c 45 4a 45 43 54 00 0b 00 8e 00 06 00 50 2a 20 00 0b ┆O YES END I/O D P ABL LDREG f PEXIT ABL TDISP x P EJECT P* ┆
0x1018…1068 00 9c 00 10 00 50 2a 20 20 20 20 52 20 43 20 43 20 50 00 0b 00 a6 00 06 00 50 2a 20 00 0b 00 ba 00 06 00 50 2a 20 00 0b 00 c4 00 0e 00 50 52 43 43 50 5c 45 51 55 5c 2a 00 0b 00 ce 00 12 00 50 5c 43 46 5c 41 31 35 2c 53 41 56 45 38 20 00 0b ┆ P* R C C P P* P* PRCCP EQU * P CF A15,SAVE8 ┆
0x1068…10b8 00 e0 00 14 00 50 5c 4c 44 5c 41 37 2c 44 57 54 53 54 2c 41 36 20 00 0b 00 f6 00 10 00 50 5c 52 42 28 4e 29 5c 45 58 49 54 20 00 0b 01 0e 00 0e 00 50 5c 4c 44 4b 5c 41 31 2c 32 20 00 0b 01 22 00 0e 00 50 5c 52 42 5c 45 4e 44 49 4f 20 00 0b ┆ P LD A7,DWTST,A6 P RB(N) EXIT P LDK A1,2 " P RB ENDIO ┆
0x10b8…10e2 01 34 00 06 00 50 2a 20 00 0b 01 46 00 06 00 50 2a 20 00 0b 01 50 00 08 00 50 5c 45 4e 44 00 0b 01 5a 40 04 00 00 00 0b 01 66 ┆ 4 P* F P* P P END Z@ f┆
0x10e2…10ea (12, 1, 8) 20 04 00 00 00 0c 00 04 ┆ ┆