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:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user