Category Archives: Computer

Oscilloscope graphics using a amiga (bonus vectrex)

Somewhere in 1992 i got hold of a Oscilloscope, probably borrowed from someone. I don’t know what happend to it. I got the idea to generate drawings on the scope, because it had two inputs with you could switch to x and y inputs.

Example oscilloscope

My friend Sepp got into it also, we both wrote some software to do funky stuff with this. I found some software today (20220516), and having bought a old skool scope 2 years ago …

So i found source machine code, no executables. Now i needed to get a assembler running again.

Sidenote: I recently fixed a Amiga 500 and got a disk switch installed on the even cia.

Disk df0 df1 switch print at the center of the image


Booting some old seka disks and starting MasterSeka again in a looong time.

ESC - open editor
r (read file)
v (directory)
a + enter + enter (no options assemble)
g (go running the program)
FIrst part of machine code .. at the bottom part are arrays of coordinates to draw things

Some programs on the disk: (some are made by Sepp, who is a far better coder than i am)

  • Funny triangles
  • Lissajous figures
  • Moving square
  • House
  • House with door
  • Draw with mouse

Lissajous figures are simple sine and cosine functions to get:

So how does this work, well a amiga has stereo outputs. These are controlled by two DAC outputs on the 8364 (Paula) chip. (DAC – Digital Analog Convertor) ( Paula has 4 DMA controlled DACs !! )

Looking at the schematics of the audio part, we see a lot going on concering audio filters. The tests i’ve done today (2022) are on a amiga with unmodified audio filters. (Low on my prio list)
So frequencies are not direct what you get directly converted from digital values. Besides that, syncronisation between left and right channel, even using DMA can be an issue.
(DMA – Direct Memory Access, this means that it can be controlled without using the CPU)

Running the house draw code:

Note: Due to different hardware not a good working example .. yet

More examples .. hard to capture a still image

I tried a few years after we did this, to modify a generic monitor to display things using two inputs, not using scanlines. But to no avail. Only flipping the screen and colors using relais (more on this later)

Bonus part: Above did remind me of a Vectrex, a game console which utilises same display technic. So no raster lines and pixels, but line drawing by controlling the beam.

Movie from 2017 .. Vectrex was made in 1982-1983

Drawing lines using a laserbeam

While attending school, we had to come up with a computer related project.

I had access to a military grade laser (i think it was for aiming), so i went for a drawing-animations-with-a-laser project.

I started off by myself, but soon after my teacher was interested in the project. He knew someone at the University of Twente.
So he made  an appointment for me. I don’t know which teacher and guy at the Uni but it was really interesting.
Laser microscopes!

Image from https://physics.emory.edu/faculty/weeks/confocal/

I was using speakers with mirrors on it, and glued tiny mirrors on stepper motors. But these are far too slow.
The Uni guy gave me some tiny mirrors which can be controlled by putting power on the little coils. But even these lightweight mirrors from a video disc player are “slow”. At least for making sharp corner turns.

Kindda dusty


So i was given an electronic schematic also.
This was an amplifier with sensors, which would give a power boost when needed.

In 2022 I found some information about this on my fileserver.

Above a schematic about the feedback amplifier

Writing software and experimenting with coordinates to send to the laser mirrors.

A few years later this laser was used in my computer dungeon using a smoke machine from my friend Marco who used this machine for his mobile disco.
We closed all doors and windows, making it as dark as possible. Let the smoke machine run for a long long time, and played with this laser setup.
Next day when the room was aired, all computers had a fatty substance on it, so I spent the rest of the day cleaning everything.

Some time later the laser broke.

Pdp-11 and playing with printers

I got a free mainframe, when i was about 17.
It was a huge Pdp-11/34 which a had to get from Enschede to Holten using a trailer.

PDP-11/34
  • It was a 19inch rack (loads of metal)
    • 2x 8inch floppy drives
    • 2x 20MB harddisk drives (with cardridge) each 34KG!
  • multiple (3?) Decwriter III printers
  • loads of VT100 terminals
  • 2.5 meter of manuals
  • cables
  • disks (8 inch) and harddisk cartridges

I converted the power to a generic 230V connector. When booting the machine all the lights in the house dimmed.

I didn’t know anything about mainframes, but i got things working.
Sometimes i would play with it, but after a while it didn’t run anymore.

I’ve kept some of the parts of the machine.
Terminals we used for a long time to connect to a linux server.
( The VT100 where later switched for more modern Wyse terminals )

One of the two drives (34kg) (not my picture)

Some parts i’ve kept

VT100 serial terminal (gave this one to a colleage) Postit says: Could you install Windows on this for me??

Serial printer

Last Decwriter i’ve got, also gone now.

These printer we used for generic printing, and just for fun.
They made a lot of noise, and even they are serial printers they are fast!

So i resourced ms-dos into assembly and printed that, that was a sh*tload of paper.
We even made a racing game. (Can’t find the source, but i’ve recreated a lookalike in linux-bash)

Object of the game was to keep your car O character on the road.
The printer printed the lines, and you could use the keyboard to move your car, which also got printed.

Below the build-in-5-minutes bash lookalike. ( z left, x straight and c right)
Original had more intricate road, and probably the road was drawn using two lines, to speedup printing (Decwriter III could print at 180 characters per second bidirectional!)

Looked more like this i think
#!/bin/bash
i=0
j=0
car=8
while true ; do
no=$(awk "BEGIN{print sin($i*atan2(0,-1)/180)*40+40}" | cut -f1 -d.)
way=$(awk "BEGIN{print sin($j*atan2(0,-1)/180)*10+13}" | cut -f1 -d.)
#echo $way
if [ $car -lt 0 ] ; then echo "boom" ; exit ; fi
if [ $car -gt $way ] ; then echo "boom" ; exit ; fi
carr=$car
rest=$((140-$no-$way))
i=$(($i + 1))
j=$(($j + 5))
while [ $no -gt 0 ] ; do
echo -n " "
no=$(($no - 1))
done
echo -n "#"
while [ $way -gt 0 ] ; do
echo -n " "
if [ $carr -eq 0 ] ; then
echo -n "O"
fi
way=$(($way - 1))
carr=$(($carr - 1))
done
echo -n "#"
while [ $rest -gt 0 ] ; do
echo -n " "
rest=$(($rest - 1))
done
echo ""
read -r -t 0.1 -n 1 -s key
if [ "$key" == "z" ] ; then
car=$((car - 1 ))
fi
if [ "$key" == "x" ] ; then
car=$((car - 1 ))
fi
if [ "$key" == "c" ] ; then
car=$((car + 1 ))
fi
done

8085 Machinecode at school

Funny story about learning machinelanguage at school.

It was around 1989, and was attending a class Microcomputer Programming in Machine Language.

We where given a problem we had to solve using 8085 machine code.
The machine we had to program this on was a Intel SDK-85, much like below example.

Intel SDK-85

Note it only had a hex keyboard and 7segmented display. You had to punch in the machinecode into memory slots yourself.

Problem we where given was something like searching for certain data in memory.

Normal procedure was :

  • Draw a flow of instructions (Flowchart)
  • Write the machine languages codes
  • Convert those assembly statements into Opcodes the machine could understand
  • Punch in those numbers, run and verify

Most of us knew a lot of opcodes by heart, but some knew all opcodes. And how many bytes where needed. besides that we had to remember jump and return addresses.

So our teacher presented the problem, when he stopped talking, my friend Martin and I when up to our machines … punching buttons.

” Guys .. you can’t expect it to work without writing the program down first!

A few minutes later .. we pressed enter .. and it worked.

A program like above looked like: 
01 2E 2B 21 00 00 79 BE C2 1F C0 CD 19 C0 CA 1E C0 78 BE C2 06 C0 C3 25 C0 2C C2 1E C0 24 C9 CD 19 C0 C3 06 C0 C9

Cut into opcodes:

01 2E 2B
21 00 00
79
BE
C2 1F C0
CD 19 C0
CA 1E C0
78
BE
C2 06 C0
C3 25 C0
2C
C2 1E C0
24
C9
CD 19 C0
C3 06 C0
C9

Some opcodes used 1 byte, others 2 or 3.
C2 1F C0 – means Jump to address C01F when not zero
C9 – means return, go back to a previous CALL statement

Example of machine language which is translated into above

ADDR ; INSTRUCTION
C000 ; LXI B,0X2B2E
C003 ; LXI H,0X0000
C006 ; MOV A,C
C007 ; CMP H
C008 ; JNZ C01F
C00B ; CALL CO19
COOE ; JZ CO1E
ETC
Almost 255 opcodes

Hacktic and card copier

NOTE: Cardcopier was a few years later

Somewhere this year i got a subscription on HackTic a dutch hacker magazine.

Honestly most of the things i didn’t understand ( i was not into Unix at that time.)

I still got most of the magazines, except for some i lend to others and never got back.

In number 8 (1990) there was a schematic for copying magnetic strip cards. It took a while to build this, but i got it working in the end.
I managed to get a working bank card copied onto my Film rental store card. And we managed to copy magnetic cards which would hold information about how many copies you could make at the school xerosmachines. So we copied a full card and when it was empty rewrote information on it to fill it again.

At the MTS in Hengelo we also had a hidden switch for the payphone to get our money back.

BBC Acorn

While attending the LTS (lower vocational technical school), i could often be found in the computer lab.
I was the only student who had his own key.
We had a classroom with 16 computers, 2 drives at the master station and a printer.
Everything was connected using Econet. (These where the first networked computers i’ve worked with)
https://en.wikipedia.org/wiki/Econet

So every moment we didn’t have a class, i was there.
Even when i had to do final exams, i was late entering, and sometimes one of the first leaving.

Today (2022) i ran an emulator on my machine and typed in one of my old programs found in a notebook.
(The real system above pictured, i have to repair)
By the way, this is one of the computers from school, even with its original wooden monitor stand. The school contacted me (a few years after leaving this school) if i wanted to buy one of the machines.

My notebook containing programs

One of the shorter programs in basic

   20R=.8
   30Q=.05
   40MODE0
   50X=500
   60GCOL1,3
   70Y=500
   80MOVE650,650
   90DRAW670,650:DRAW670,670:DRAW650,670:DRAW650,650
  100A=GET-48
  110IFA=1THENX=X+Q
  120IFA=2THENX=X-Q
  130IFA=3THENY=Y+Q
  140IFA=4THENY=Y-Q
  150IFA=5THENR=.8
  160IFA=6THENR=0
  170X1=200*SIN(X)+500
  180X2=200*SIN(Y+X)+X1
  190X3=50*SIN(Y+X+R)+X2
  200X4=50*SIN(Y+X-R)+X2
  210Y1=200*COS(X)+500
  220Y2=200*COS(Y+X)+Y1
  230Y3=50*COS(X+Y+R)+Y2
  240Y4=50*COS(Y+X-R)+Y2
  250CLS
  260IFX4>650ANDX4<670ANDY4>650ANDY4<670THENPRINT"RAAK"
  270MOVE450,450
  280DRAW550,450
  290DRAW500,500
  300DRAW450,450
  310MOVE500,500
  320DRAWX1,Y1
  330DRAWX2,Y2
  340DRAWX3,Y3
  350MOVEX2,Y2
  360DRAWX4,Y4
  370GOTO80
  380MODE7
  390PRINTTAB(12,10)CHR$129CHR$141"FASH-SOFT"
  400PRINTTAB(12,11)CHR$130CHR$141"FASH-SOFT"
  410A=GET
  420RUN
Keys
1,2 - first arm (left/right)
3,4 - second arm (left/right)
5,6 - open/close grabber

This program got me in trouble because my teachers didn’t believe me. It wasn’t written by me according to them. Because my math grades were terrible!

Later versions had a nicer looking robotic arm. (More 3d, not a line but a arm with thickness)

Notes:

*CAT ; list disk files
LOAD"FSHDRAW" ; load

Print to file or clipboard
LIST07 ; page formatting
VDU2 ; start output redirection (screen + "printer")
LIST
VDU3 ; stop redirection

Installing the Emulator under linux

 git clone https://github.com/stardot/b-em.git
 sudo apt-get install autotools-dev automake
 sudo apt-get install liballegro5-dev
 cd b-em/
 ./autogen.sh 
 ./configure 
 make
 ./b-em