From 628a20654b454ba1664dcd641f77d44d287c81b0 Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Tue, 23 Oct 2018 08:48:39 +0000 Subject: [PATCH] Fix use of UFA instruction in C library. Patch out the call to FIXIFY in CC. This subroutine uses the UFA instruction which isn't implemented on a KS10. Make the use of UFA an assembly time conditional in the C library. Replace it with FIX on KS10. --- build/misc.tcl | 10 ++++++++++ src/clib/c10run.cmid | 16 ++++++++++++---- src/clib/cfloat.cmid | 19 +++++++++++++------ 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/build/misc.tcl b/build/misc.tcl index db76df01..7c5c9674 100644 --- a/build/misc.tcl +++ b/build/misc.tcl @@ -1087,6 +1087,16 @@ respond "M IML" "\r" respond ":PDUMP" "games; ts maze\r" respond "*" ":kill\r" +# The old CLIB has a UFA instruction which doesn't work on a KS10. +# Patch out the call to FIXIFY. +respond "*" ":job cc\r" +respond "*" ":load c; ts cc\r" +respond "*" "55107/" +respond "FIXIFY" "jfcl\r" +respond "UNPURE" ":corblk pure,55107\r" +respond "*" ":pdump c; ts cc\r" +respond "*" ":kill\r" + # TJ6 respond "*" ":midas sysbin;_tj6;tj6\r" expect ":KILL" diff --git a/src/clib/c10run.cmid b/src/clib/c10run.cmid index f5851177..7e077b9e 100644 --- a/src/clib/c10run.cmid +++ b/src/clib/c10run.cmid @@ -8,6 +8,8 @@ TITLE CRUN .INSRT NC .INSRT NM +IFNDEF KS10,KS10==0 + .GLOBAL A,B,C,D,P,GO,.CCALL,.VCALL,.ACALL,.XCALL PDLSIZ==20000 ; DESIRED PDL SIZE @@ -352,17 +354,23 @@ I$MES4: ASCIZ/PURIFY FAILED/ .CODE +IFE KS10,[ +EXPUNGE FIX +DEFINE FIX X,Y + UFA Y,[233000000000'] + TLZ X,777000' +TERMIN +] + IENTRY FIXIFY JUMPL A,FIXL FADR A,[.499999] - UFA A,[233000000000'] - TLZ B,777000' + FIX B,A JRST @0 FIXL: MOVN A,A FADR A,[.499999] - UFA A,[233000000000'] - TLZ B,777000' + FIX B,A MOVN B,B JRST @0 diff --git a/src/clib/cfloat.cmid b/src/clib/cfloat.cmid index 5e00a8c0..a608a262 100644 --- a/src/clib/cfloat.cmid +++ b/src/clib/cfloat.cmid @@ -8,6 +8,8 @@ TITLE CFLOAT .INSRT NC .INSRT NM +IFNDEF KS10,KS10==0 + ; CONTAINS: LOG, EXP, COS, SIN, ATAN, SQRT, DTRUNCATE, DROUND, DABS CENTRY LOG,[V] @@ -183,24 +185,29 @@ ATAN3: MOVE A,B SQRT2: 1.41421356 PI2: 3.1415926535/2 +IFE KS10,[ +EXPUNGE FIX +DEFINE FIX X,Y + UFA Y,[233000000000'] + TLZ X,777000' +TERMIN +] + CENTRY DROUND,[V] MOVE A,V FADR A,[.499999] JUMPL A,ROUND1 - UFA A,[233000000000] - TLZ B,777000 + FIX B,A GO ROUND2 -ROUND1: UFA A,[233000000000] - TLO B,777000 +ROUND1: FIX B,A ROUND2: MOVE A,B RETURN CENTRY DTRUNCATE,[V] MOVE A,V - UFA A,[233000000000] - TLZ B,777000 + FIX B,A MOVE A,B RETURN