1
0
mirror of https://github.com/pkimpel/retro-b5500.git synced 2026-02-12 03:07:30 +00:00

Commit DCMCP transcription as of 2012-12-06.

This commit is contained in:
paul
2012-12-06 15:24:35 +00:00
parent a381c13aba
commit 52954a5da6
2 changed files with 75 additions and 15 deletions

View File

@@ -17007,3 +17007,68 @@ COMMENT STACK NOW CONTAINS : 0 FOR IDENTIFIER & NO. OF CHRS% 20352000
2(36(IF SC=">" THEN %890-20374403
BEGIN CARDLOC~SI;DI~CARDLOC;DS~ LIT "=" END; %890-20374404
IF SC="}" THEN %890-20374405
BEGIN CARDLOC~SI;DI~CARDLOC;DS~ LIT """ END; %890-20374406
SI~SI+1;)) %890-20374407
END; %890-20374408
$ SET OMIT = NOT(PACKETS) 20374409
IF UNITNO GEQ 32 AND NOT LASTSCAN.[2:1] THEN 20374410
BEGIN STREAM(CARDLOC, I~I~SPACE(10)); 20374415
BEGIN DS~5LIT">"; 20374420
SI~CARDLOC; 2(DS~36 CHR); DS~LIT"~"; 20374425
END; SPOUTER(I,UNITNO,64); 20374430
END; 20374435
$ POP OMIT 20374436
GO TO GOGO; 20374500
END; 20374600
IF KOUNT = "1" THEN% 20375000
BEGIN LASTSCAN ~ -1; GO TO PERPER END;% 20376000
I ~ IF KOUNT ="/" THEN SLASH ELSE% 20377000
(IF KOUNT = @14 THEN QUEST ELSE% 20378000
(IF KOUNT ="," THEN COMMA ELSE% 20379000
(IF KOUNT = "=" THEN EQUAL ELSE % THIS IS AS IN SYMBOL 20380000
(IF KOUNT = "]" THEN RB ELSE 20380100
(IF KOUNT = "[" THEN RB ELSE 20380200
(IF KOUNT = "#" THEN POUND ELSE SPECI)))))); 20380500
TYPE1: SCN~I; 20381000
END SCAN ;% 20382000
PROCEDURE SEEKNAM(A,B,C,D,E,N,XLST); VALUE A,B; 20382010
REAL A,B,C,D,E,N; ARRAY XLST[*]; 20382015
BEGIN 20382020
LABEL FIND,L; 20382030
ARRAY NB[*]; 20382040
REAL I,K,T,X; INTEGER J; BOOLEAN INXLST; 20382050
INTEGER J1,J2,J3,K1,K2; 20382052
LABEL RESTART; 20382054
IF C=0 THEN 20382056
BEGIN N:=SPACE(60);-1; 20382058
J1:=J3:=0; K1:=K2:=MODULUS-1; 20382060
IF A GEQ 0 THEN J1:=K1:=(A.[6:18]+A.[24:24]) MOD MODULUS; 20382062
IF B GEQ 0 THEN J3:=K2:=(B.[6:18]+B.[24:24]) MOD MODULUS; 20382064
END ELSE 20382066
BEGIN I:=(T:=M[N]).[42:6]; 20382068
J1:=T.[36:6]; J2:=T.[30:6]; J3:=T.[12:6]; 20382070
K1:=T.[24:6]; K2:=T.[18:6]; 20382072
END; 20382074
NB:=[M[N+1]]&60[8:38:10]; 20382076
IF C NEQ 0 THEN GO TO RESTART; 20382095
FOR J1:=J1 STEP 1 UNTIL K1 DO 20382100
FOR J2:=J3 STEP 1 UNTIL K2 DO 20382110
BEGIN J:=SCRAMBLE(J1,J2); 20382120
DO BEGIN 20382130
DISKWAIT(-N-1,60,J); 20382140
FOR I:=0 STEP 3 UNTIL 57 DO 20382150
BEGIN 20382160
IF (T:=NB[I]) NEQ @14 THEN 20382165
IF (T EQV A)=NOT 0 OR A<0 THEN 20382170
IF (NB[I+1] EQV B)=NOT 0 OR B LSS 0 THEN 20382200
IF (X:=XLST.[8:10]-2) GEQ 0 THEN % EXCEPT LIST EXISTS20382220
BEGIN INXLST:=FALSE; 20382240
FOR K:=0 STEP 2 UNTIL X DO 20382260
IF (XLST[K] EQV T)=NOT 0 OR XLST[K] LSS 0 THEN 20382280
IF (XLST[K+1] EQV NB[I+1])=NOT 0 OR XLST[K+1] LSS 0 20382300
THEN BEGIN INXLST:=TRUE; 20382320
IF NOT (XLST[K].[1:1] OR XLST[K+1].[1;1]) 20382340
THEN BEGIN XLST[K]:=XLST[X]; 20382360
XLST[K+1]:=XLST[X+1]; 20382380
XLST.[8:10]:=XLST.[8:10]-2; 20382400
END; 20382420

View File

@@ -1209,31 +1209,26 @@ B5500Processor.prototype.singlePrecisionCompare = function() {
ma = this.A % 0x8000000000; // extract the A mantissa
mb = this.B % 0x8000000000; // extract the B mantissa
// Extract the exponents and signs. If the exponents are unequal, normalize
// each until the high-order octade is non-zero or the exponents are equal.
if (ma == 0) { // if A mantissa is zero
ea = sa = 0; // consider A to be completely zero
} else {
ea = (this.A - ma)/0x8000000000;
sa = ((ea >>> 7) & 0x01);
ea = (ea & 0x40 ? -(ea & 0x3F) : (ea & 0x3F));
}
if (mb == 0) { // if B mantissa is zero
eb = sb = 0; // consider B to be completely zero
} else { // rats, we actually have to do this
eb = (this.B - mb)/0x8000000000;
sb = (eb >>> 7) & 0x01;
eb = (eb & 0x40 ? -(eb & 0x3F) : (eb & 0x3F));
}
// If the exponents are unequal, normalize each until the high-order octade
// is non-zero or the exponents are equal
if (ma) { // Normalize A
while (ma < 0x1000000000 && ea != eb) {
this.cycleCount++;
ma *= 8; // shift left
ea--;
}
}
if (mb) { // Normalize B
}
if (mb == 0) { // if B mantissa is zero
eb = sb = 0; // consider B to be completely zero
} else {
eb = (this.B - mb)/0x8000000000;
sb = (eb >>> 7) & 0x01;
eb = (eb & 0x40 ? -(eb & 0x3F) : (eb & 0x3F));
while (mb < 0x1000000000 && eb != ea) {
this.cycleCount++;
mb *= 8; // shift left
@@ -1241,7 +1236,7 @@ B5500Processor.prototype.singlePrecisionCompare = function() {
}
}
// Compare signs, exponents, and normalized magnitudes, in that order
// Compare signs, exponents, and normalized magnitudes, in that order.
if (sb == sa) { // if signs are equal:
if (eb == ea) { // if exponents are equal:
if (mb = ma) { // if magnitudes are equal: