View unanswered posts | View active topics It is currently Fri Mar 29, 2024 6:50 am



Reply to topic  [ 19 posts ]  Go to page 1, 2  Next
 octal computing 2022 back to 1959 
Author Message

Joined: Mon Oct 07, 2019 2:41 am
Posts: 585
I have decided to try a 18 bit computer, since I have parts for a 6 bit octal front panel.
Code:

 Ben's computer, 36 bit draft version 22-02-12

Octal 36 is a simple 36 bit computer using MSI and LSI logic from 1977,using a
18 bit bus with up to 20 bits of address space.The bus speed about 1.5 mhz, for
a 80 x 25 Video Card (25Mhz). Two 2400 baud serial ports and two emulated 1.5
meg platter drives (SD cards) with 8 Kb BIOS and 96Kb ram are the standard sys-
tem. The octal front panel with Run/stop, adr/load, dep, exam, pc/ac,hi/low is
used to boot start the system.


 Internaly 3 512 x 8 proms are for the microcode. 2901 bit slices are used for
the data path, on 2 20/16 bit cards. Programable logic like the 82S100 may be
used for microcode decoding in 1977. A current version could use CMOS 22V10's
or just 74HCTXX. 100 ns flash proms would be the only programable parts then.
Altera's DE1 Cyclone II, FPGA development system is used for prototyping the
TTL hardware. 256Kb or 64K words total memory and of that 16K words is reserved
for the single user OS. This just a bit more than IBM's big computerrs
 Single word floating point will be supported in software. 28 bit mantissa,9 bit
exponent.

 * Internal memory model

  36                18       9      1
 +-----------------+--------+--------+
 |                 |        |        | 6 GP registers A B C D X Y
 +-----------------+--------+--------+
 |                 |        |        | 4 GP optional registers E F G W .
 +-----------------+--------+--------+  ± extended flag or sign

                20                  1
 +------------+----+--------+--------+
 |------------|    .        .        | 2 special registers S PC
 +------------+----+--------+--------+

 [C] [R] [E]                           flags C carry R run E Enable IRQ

 * OP CODE FORMAT

  111 111 111
  876 543 210 987 654 321
 +---+---+---+---+---+---+
 |0a-|000|AAA|.SS|110|0±#|   DIRECT 20 bits
 +---+---+---+---+---+---+
 +---+---+---+---+---+---+
 |0a-|000|AAA|.SS|MMx|XXX|   MEM REF ST<SIZE> A <MODE> X (EFA)=AC
 +---+---+---+---+---+---+
 +---+---+---+---+---+---+
 |0aC|OOO|AAA|.SS|MMx|XXX|   MEM REF OP<SIZE> A <MODE> X AC = AC OP (EFA)
 +---+---+---+---+---+---+
 +---+---+---+---+---+---+
 |00-|000|AAA|.00|000|###|   CTL                       CONTROL = NOP,HLT,DI,EI
 +---+---+---+---+---+---+
 +---+---+---+---+---+---+
 |0a-|000|AAA|.00|010|000|   LIT                       interal use
 +---+---+---+---+---+---+
 +---+---+---+---+---+---+
 |0a0|000|AAA|.00|10x|XXX|   LEA A X #                 AC = EFA
 +---+---+---+---+---+---+
 +---+---+---+---+---+---+
 |0a0|000|AAA|.00|110|0±#|   JSV A Z                   (-S) = PC, PC = #ADR
 +---+---+---+---+---+---+
 +---+---+---+---+---+---+
 |0aC|OOO|AAA|.00|10x|XXX|   OP% A X                   AC = AC OP IX
 +---+---+---+---+---+---+   (register)
 +---+---+---+---+---+---+
 |1aC|OOO|AAA|±##|###|###|   byte #                    AC = AC OP # byte
 +---+---+---+---+---+---+   
 +---+---+---+---+---+---+
 |0aI|CCC|AAA|.00|11?|###|   BCC A #                   IF(CC) PC = #ADR
 +---+---+---+---+---+---+
 +---+---+---+---+---+---+
 |0a-|SSS|AAA|.01|00#|###|   SFT A #                   SFT AC #N TIMES
 +---+---+---+---+---+---+
 +---+---+---+---+---+---+
 |0a-|111|AAA|.10|00.|XXX|   JMP A R+                  PC = (R+)
 +---+---+---+---+---+---+
 +---+---+---+---+---+---+
 |0a-|111|AAA|.01|110|000|    SCC A                    A = CONDITION(CC)
 +---+---+---+---+---+---+



  * FUNCTION MATRIX

    A/X    OP  C   COND    SS      MM   SFT
   +-----+--------+-------+-------+----+---+
 0 |A  E | ST  -  |-      |REG   %|-R  |-  |
   +-----+--------+-------+-------+----+---+
 1 |B  F | -   XOR|Z      |BYTE  .|-R  |SZL|
   +-----+--------+-------+-------+----+---+
 2 |C  G | SBX BIT|S      |SHORT :|R+,#|SCL|
   +-----+--------+-------+-------+----+---+
 3 |D  W | ADX AND|S+Z    |WORD   |R+,#|ROL|
   +-----+--------+-------+-------+----+---+
 4 |X  - | LD  OR |~C     |REG    |R # |ROR|
   +-----+--------+-------+-------+----+---+
 5 |Y  - | CAD CAC|~C+Z   |BYTE   |R # |SZR|
   +-----+--------+-------+-------+----+---+
 6 |S  - | SUB SBC|1      |SHORT  |Z   |SCR|
   +-----+--------+-------+-------+----+---+
 7 |#  - | ADD ADC|1      |WORD   |Z   |ASR|
   +-----+--------+-------+-------+----+---+

   * FRONT PANEL

   +---+---+---+---+---+---+
   | D | D | D | D | D | D | <run>    NIXIE TUBES
   +---+---+---+---+---+---+
   +---+---+---+---+---+---+
 PP|SSS|SSS|SSS|SSS|SSS|SSS| D X A R  PANEL AND FUNCTION SWITCHES
   +---+---+---+---+---+---+



The IBM 7090 a 36 bit computer, had 32K words of memory address,1959. Later computers like the PDP-6
had 256K words,1964. I fall in the middle with computing power, in regards to memory space.
Ben.
A hex display would give a nice 48 bit computer in a similar format , but that build is for next year. :)


Sat Dec 03, 2022 7:04 am
Profile

Joined: Sat Feb 02, 2013 9:40 am
Posts: 2095
Location: Canada
Quote:
Single word floating point will be supported in software. 28 bit mantissa,9 bit
exponent.
That's 37 bits :) Is there a sign bit too? Is the mantissa, significand, including a hidden bit?

_________________
Robert Finch http://www.finitron.ca


Sat Dec 03, 2022 7:42 am
Profile WWW

Joined: Mon Oct 07, 2019 2:41 am
Posts: 585
robfinch wrote:
Quote:
Single word floating point will be supported in software. 28 bit mantissa,9 bit
exponent.
That's 37 bits :) Is there a sign bit too? Is the mantissa, significand, including a hidden bit?

I miss counted there, 27 bits. I will use a hidden bit, for 28 bits after reading a paper "27 bits are not enough for 8 digit accuracy".
The other change will be signed 8 bit constant rather than 9 bits. Ben,


Attachments:
363067.363112.pdf [217.3 KiB]
Downloaded 170 times
Sat Dec 03, 2022 12:32 pm
Profile

Joined: Mon Oct 07, 2019 2:41 am
Posts: 585
I am now looking at 10/20/40 bit cpu, 7 octal digits. I can now do a 8 digit decimal floating point or 9 digit binary floating point.
This is as big as small computer will get. Ben.


Sun Dec 04, 2022 9:11 am
Profile

Joined: Mon Oct 07, 2019 2:41 am
Posts: 585
Having build issues again, with the FPGA. I plan to try two versions octal or hex for each cpu and see what works. Minor changes
in the opcode format for each type.

I have the Nixie tube parts on order, but I need to do PCB for the design
as my proto type boards are too small. The first draft will be a 7 segment led version(6+ digits).
I need to hack my current front panel (hex) to look more like the new version, today.
Ben.


Tue Dec 06, 2022 7:40 pm
Profile

Joined: Mon Oct 07, 2019 2:41 am
Posts: 585
Octal data processor 9 is mostly done, a 36 bit cpu, with a revised front panel. Timing is for 1969 emulation with 1.5 uS core.
Byte's sive benchmark is about 15 seconds. Removed Excess 3 stuff for a faster shift x 1. Need to write the FP software still
before I can say the BIOS in rom is done. Need to think about, hardware changes for a timesharing OS.
Ben.


Mon Dec 12, 2022 7:15 am
Profile
User avatar

Joined: Sun Dec 19, 2021 1:36 pm
Posts: 68
Location: Michigan USA
Quote:
Byte's sive benchmark is about 15 seconds.


Can you post a link or say more about the benchmark you are using from Byte?


Mon Dec 12, 2022 7:40 pm
Profile WWW

Joined: Mon Oct 07, 2019 2:41 am
Posts: 585
mmruzek wrote:
Quote:
Byte's sive benchmark is about 15 seconds.


Can you post a link or say more about the benchmark you are using from Byte?


https://en.wikipedia.org/wiki/Byte_Sieve
Code:
-- sive program
  debug 7
@@gol.inc
define EOF -1 TTY 0 NUL 0
define true 1
define false 0
define size 8190
define sizepl 8191
char line[81]
char flags[sizepl] ;
begin
main() {
    int i, prime, k, count, iter;
    printf(TTY,"10 iterations\n");
   strcpy(line,"Hit enter to start:");
   getin(line,TTY);
    iter = 1;
    while(iter <= 10) {
        count=0 ;
        i = 0
        while(i <= size){
            flags [i] = true;i=i+1;}
             
        i = 0;
        while(i <= size){
            if (flags[i]) {
                prime = i + i + 3;
                k = i + prime;
                while (k <= size) {
                    flags[k] = false;
                    k = k + prime;
                }
                count = count + 1;
            }
        i=i+1;
        }
    iter = iter+1;
    }
    printf(TTY ,"\n%d primes", count);
}
end


The C like langauge compiles into a 17K paper tape file. Longer to load, than run @ 1200 baud.
Byte's bench mark is really tuned, just for 8 bit cpus.
Ben.


Mon Dec 12, 2022 8:32 pm
Profile
User avatar

Joined: Sun Dec 19, 2021 1:36 pm
Posts: 68
Location: Michigan USA
Thank you! Interesting benchmark. Here is a link to the original Byte magazine issue with the article...

https://archive.org/details/byte-magazi ... 1/mode/2up

Also, I attached a screenshot of a page from the article reporting some test results. It makes for some interesting reading!


Attachments:
sieve.png
sieve.png [ 361.59 KiB | Viewed 4259 times ]
Mon Dec 12, 2022 10:45 pm
Profile WWW

Joined: Mon Oct 07, 2019 2:41 am
Posts: 585
Development will be on a teeny 20 bit computer, in hex? format. 10,20,40 bit data with software 9 digit binary floating point.
This is the best compromise for word length, and single word floating point numbers. I have the basic 4 functions + - * /
written but untested in rom. I need to write the I/O and function library as well as adding a floating point constant define
in the assembler. Later in January I hope to have a basic file system, compiler and text editor, and simple assembler,
cleaned up. Mid Feb, I hope to have a Hex front panel pcb, done. and some sort of case in March for the fpga version.
Then I can back port, the stuff to the other machines. 8 digit floating point for the 18 bit cpu,16 digits for the 32 bit cpu,
11 digits for the 24 bit cpu.
Ben.


Thu Dec 29, 2022 6:41 am
Profile

Joined: Sat Feb 02, 2013 9:40 am
Posts: 2095
Location: Canada
Quote:
Later in January I hope to have a basic file system, compiler and text editor, and simple assembler,
cleaned up. Mid Feb,
With all that done in that tight a schedule I assume you are making reuse of existing software and tools?
Quote:
I need to write the I/O and function library a
Do you have code for parsing and printing an FP number? I got my code by studying a BASIC interpreter, but I am always looking at code. My current print code messes up sometimes with small numbers and prints something like 0.*999....999e-1536. The smallest exponent is supposed to be -1534 I think. I am sure it is just a display thing but maybe some corner case is wrong in the FP.
How do you build all those computers so fast?

_________________
Robert Finch http://www.finitron.ca


Thu Dec 29, 2022 8:17 am
Profile WWW

Joined: Mon Oct 07, 2019 2:41 am
Posts: 585
robfinch wrote:
With all that done in that tight a schedule I assume you are making reuse of existing software and tools?
Do you have code for parsing and printing an FP number? I got my code by studying a BASIC interpreter, but I am always looking at code. My current print code messes up sometimes with small numbers and prints something like 0.*999....999e-1536. The smallest exponent is supposed to be -1534 I think. I am sure it is just a display thing but maybe some corner case is wrong in the FP.
How do you build all those computers so fast?


Most of the stuff I found is off the net on old machines,for floating point. The paper '27 bits are not enough for 8 digit accuracy' is good read. Back then computers cost a few million US dollars,so I want to be able to compute just what I paid. I don't even want to think how to compute that in English Pounds, and assorted change.

In my case, the instruction size is 16 bits,with the data path extened to N bit width. Bytes are N/2 bits wide unsigned. Memory access uses a 16 bit int, for every N/2 bit byte. Some minor changes are needed with the cross assembler for each version.
I use WinMerge to keep the text versions in sync. For the most part the FPGA logic just needs the defines changed, or a ROM revised.
So everything is mostly a clone, of the same thing. Version control software, would be handy, but the FPGA software uses too many
popup windows for editing the internal database, to permit that.

The IAS computer used a 40 bit word, in 1952. Perhaps they picked the right size for numerial computing.
Auto scaling of numbers (floating point) had yet to be invented, 48 bit machines seemed to developed soon after.


Thu Dec 29, 2022 11:34 am
Profile

Joined: Sat Feb 02, 2013 9:40 am
Posts: 2095
Location: Canada
Okay, I bit and read the article ‘27 bits are not enough for 8 digit accuracy’. It is a good read. I still wonder how to convert between binary and decimal floating point. I tried but the numbers were completely in accurate beyond a couple of digits.
Quote:
Back then computers cost a few million US dollars,so I want to be able to compute just what I paid. I don't even want to think how to compute that in English Pounds, and assorted change.

Why everybody uses at least 64-bit double precision, and often 80-bit precision for calculations for financial like calcs. 80-bits seems reasonable to me, IDK why more would be needed, and I designed an 80-bit core. But now I use 96-bits for the floats as 96-bit registers can store string descriptors too.

_________________
Robert Finch http://www.finitron.ca


Thu Dec 29, 2022 3:14 pm
Profile WWW

Joined: Mon Oct 07, 2019 2:41 am
Posts: 585
I am using Byte Nov 1977, for my floating point routines. The Internet has better floating point output routines, but you have to google them. I lost track of computer cpu's after the 386,so I have no idea just who has hardware or software floating point.
Ben.


Thu Dec 29, 2022 9:30 pm
Profile

Joined: Mon Oct 07, 2019 2:41 am
Posts: 585
floating point output and input.


Attachments:
File comment: the input half.
How_to_Read_Floating_Point_Numbers_Accurately.pdf [223.23 KiB]
Downloaded 168 times
File comment: the output half
p372-steele.pdf [2 MiB]
Downloaded 171 times
Fri Dec 30, 2022 4:32 am
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 19 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: AhrefsBot and 12 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software