Differences between revisions 26 and 28 (spanning 2 versions)
Revision 26 as of 2005-03-28 14:37:41
Size: 5709
Editor: TimRiker
Comment:
Revision 28 as of 2005-03-29 00:21:52
Size: 5858
Editor: TimRiker
Comment:
Deletions are marked like this. Additions are marked like this.
Line 37: Line 37:
 * http://simh.trailing-edge.com/docs/hp2100_algol_howto_doc.txt - building algol with the assembler
 * http://hp1000.org/ <- links to other stuff

The FirstComputer that TimRiker ever worked on was at [http://www.penfield.edu/phs/ Penfield High School] in [http://www.penfield.org/web/ Penfield, New York]. It may have been an HP-2114C model. It used a form of time shared basic, but it was not a dual cpu model cabinet. It was running a time shared basic environment. Perhaps the "TIME-SHARING EXECUTIVE" mentioned in the [http://oscar.taurus.com/~jeff/2100/family/family.html sales brochure]?

The system config as best recollected:

  • HP-2114 style cover with 16 connected touch switches
  • mounted in a rack mount cabinet
  • 32k of RAM installed split 5/5/3/3 or similar for the 2 CRTs, card reader and teletype
  • [http://www.pdp8.net/asr33/asr33.shtml ASR-33 teletype] with punch tape reader (writer?)

  • 1 text crt terminal
  • 1 "graphics" terminal (honeywell? I remember it had a graphics character set with a toggle button)
  • 2? disk drives. (type? 8" floppy? drum?
  • card reader
  • line printer
  • external tape punch was not connected.

Here are some useful links:

Hacking HOWTO:

  • install SIMH above and start "hp2100"

  • load the hp basic sources: "LO basic1.abs"

  • jump into basic "GO 100"

  • input a simple program like this one "forever":

    10 DEF FNA(X)=ATN(TAN(ATN(TAN(ATN(TAN(ATN(TAN(ATN(TAN(X))))))))))
    20 DEF FNB(X)=FNA(FNA(FNA(FNA(FNA(FNA(FNA(FNA(FNA(FNA(FNA(X)))))))))))
    30 DEF FNC(X)=FNB(FNB(FNB(FNB(FNB(FNB(FNB(FNB(FNB(FNB(FNB(X)))))))))))
    40 DEF FND(X)=FNC(FNC(FNC(FNC(FNC(FNC(FNC(FNC(FNC(FNC(FNC(X)))))))))))
    50 DEF FNE(X)=FND(FND(FND(FND(FND(FND(FND(FND(FND(FND(FND(X)))))))))))
    60 DEF FNF(X)=FNE(FNE(FNE(FNE(FNE(FNE(FNE(FNE(FNE(FNE(FNE(X)))))))))))
    80 PRINT FNF(1)
    90 END
  • list the program: "LIST"

  • then run it: "RUN"

  • note that on real hardware this silly recursive program could take a very long time to finish. On a 1G ppc debian linux box with SIMH 3.3.1-1 it takes about a half hour and then prints 1. :)

  • Here's a more useful program I whipped up that graphs trig functions

    100 REM TRIG BY TIM RIKER <TIM@RIKERS.ORG>
    110 LET X1=-3.2
    120 LET X2=3.2
    130 LET X3=.1
    140 LET Y1=-1.5
    150 LET Y2=1.5
    160 LET Y3=(Y2-Y1)/70
    170 LET X4=(-X1)/X3
    200 FOR X0=0 TO (X2-X1)/X3
    210 LET X=X1+(X3*X0)
    220 LET S0=INT(((SIN(X)-Y1)/Y3)-.5)
    230 LET C0=INT(((COS(X)-Y1)/Y3)-.5)
    240 LET T0=INT(((TAN(X)-Y1)/Y3)-.5)
    250 LET Y0=INT(((0-Y1)/Y3)-.5)
    300 FOR Y=0 TO 70
    310 IF Y=T0 THEN 520
    320 IF Y=S0 THEN 540
    330 IF Y=C0 THEN 560
    340 IF Y=Y0 THEN 580
    350 IF X0=X4 THEN 600
    500 PRINT " ";
    510 GOTO 700
    520 PRINT "T";
    530 GOTO 700
    540 PRINT "S";
    550 GOTO 700
    560 PRINT "C";
    570 GOTO 700
    580 PRINT "X";
    590 GOTO 700
    600 PRINT "Y";
    700 NEXT Y
    710 PRINT ""
    720 NEXT X0
    999 END

emulator progress

I grabbed the sources from:

and the perl assembler from:

patched 22255-08.txt thusly:

-      STB BFAD2    SAVE ADDRESS
-      JMP WCONT    MOVE IN AND PROCESS
+     STBFAD2    SAVE ADDRESS
+     P WCONT    MOVE IN AND PROCESS

and asm21 thusly:

-    } elsif ($str =~ s/^([a-zA-Z.?%\#\$][0-9a-zA-Z.?%\/=\#\$]*)//) {
+    } elsif ($str =~ s/^([a-zA-Z.?%\#\$\&\[\/@\^\!][0-9a-zA-Z.?%\/=\#\$\&\[\/@\^\!]*)//) {

and compiled them up. I can load the binary in simh. I need to start it with g 30000 which should then prompt for slot info, but it can't find the terminal. Here's the relevant source code:

PTSBS CLC 0        TURN OFF ALL DEVICES
      LIA 1        LOAD I/O ADDRESS OF TTY
      AND .63      MASK TO LOWER 6-BITS
      STA B        PUT ADDRESS IN B-REGISTER
      ARS,ARS      SHIFT TO BITS (5-3)
      ARS
      SZA          I/O ADDRESS >7?
      JMP ZGO      YES-INITIALIZE PREPARE BASIC TTY
* 
      HLT 55B      INVALID I/O ADDRESS HALT
      JMP PTSBS    TRY AGAIN

I'm not sure what to put as the tty address. The MUX in simh defaults to slot 40. While I'm sure that look obvious to some, it's not to me. :)) More info in the docs:

RikerWiki: FirstComputer (last edited 2014-02-26 18:47:12 by TimRiker)