3 min read

tandy 100

I recently acquired one of the worlds first truly portable computers that is laptop sized, the Tandy TRS-80 Model 100. This computer was released around 1983. It contains a full keyboard, runs MS BASIC, and can be powered off 4 AA batteries for roughly 20 hours. At its core is a 2.4 MHz 8085 microprocessor with 24K RAM. That's about 55X the compute power and 1/3 the memory that the Apollo program used to send men to the moon! But let's not kid ourselves here, this is no AGC.

I have always wanted to get my hands on some older hardware, and with the bulk and power usage of some of the order desktops I was excited to get my hands on this.

So, what can it do?

Well to start it has a rudimentary address book and calendar. More interestingly, it has a built in modem and serial port for communications. I wanted to get something going on it and so did some online research. There are a lot of great posts about this computer. One of the most useful is https://bitchin100.com/ which links out to a web based Model 100 emulator if you want to play without the hardware.

If you want to download something to your workstation for saving files and such, you can use the Virtual T emulator. This can also allow you to transfer files to the device if you have a serial null modem. Initially I played around with the emulator and copied in some great code by D10D3 (pasted below) for Conway's Game of Life found at this Reddit post. This will allow you to easily copy in code and run it faster than on the M100 itself.

Lacking a serial cable currently, I manually typed the program into the M100. Then ran it there. Here you can hear the wonderful keyboard sounds-

Following code by D10D3: https://pastebin.com/3cN0E6Va

10 'CONWAY'S GAME OF LIFE BY D10D3 2017
    20 SCREEN 0,0:CLS
    30 PRINT@88,"CONWAY'S GAME OF LIFE";
    40 PRINT@281,"(UP TO 5 DIGITS)";
    50 PRINT@240," ";
    60 INPUT"ENTER RANDOM SEED";SEED%
    70 DIM GRID$(320)
    80 DIM RGRID$(401) 'REFERENCE GRID
    90 GRID$(319)=" ":GRID$(320)=" "
    100 GEN=INT(RND(SEED%*-2))
    110 FOR I=0TO318
    120 PRINT@I,"*";
    130 GEN=INT(RND(1)*2)
    140 IF GEN=1 THEN GRID$(I)="O"
    150 IF GEN=0 THEN GRID$(I)=" "
    160 PRINT@I,GRID$(I);
    170 NEXT I
    180 '***START LIFE LOOP***
    190 'COPY CURRENT GRID TO REFERENCE
    200 S=361
    210 FOR I=0TO39
    220 RGRID$(S)=GRID$(I)
    230 S=S+1
    240 NEXT I
    250 S=1
    260 FOR I=280TO319
    270 RGRID$(S)=GRID$(I)
    280 S=S+1:NEXT I
    290 S=41
    300 FOR I=0TO319
    310 RGRID$(S)=GRID$(I)
    320 S=S+1:NEXT I
    330 RGRID$(0)=GRID$(319)
    340 '***START LIFE RULES***
    350 S=41
    360 FOR I=0 TO 318
    370 PRINT@I,"*";
    380 N=0 'NEIGHBORS
    390 IF RGRID$(S-1)="O"THEN N=N+1
    400 IF RGRID$(S+1)="O"THEN N=N+1
    410 IF RGRID$(S-40)="O" THEN N=N+1
    420 IF RGRID$(S-41)="O"THEN N=N+1
    430 IF RGRID$(S-39)="O"THEN N=N+1
    440 IF RGRID$(S+40)="O"THEN N=N+1
    450 IF RGRID$(S+39)="O"THEN N=N+1
    460 IF RGRID$(S+41)="O"THEN N=N+1
    470 IF N<2 THEN GRID$(I)=" "
    480 IF N>3 THEN GRID$(I)=" "
    490 IF GRID$(I)=" "AND N=3 THEN GRID$(I)="O"
    500 S=S+1
    510 PRINT@I,GRID$(I);
    520 NEXT I
    530 GOTO 180