So I have been doing a little digging about how I can program this machine from the front panel, since until the expansion board arrives, that's all I can do.
I happened upon a YouTube video that showed the bootstrap loader written by Bill Gates and Paul Allen that allowed basic to load from paper tape.
Screenshot 2024-03-03 at 11.10.14.png
And no, I haven't attempted to disassemble it yet!!!
To actually 'type' in the program is actually not as horrendously difficult as it may at first seem. First off we power on, and once it's up, we hold up 'stop' & 'reset' together to get us to a state where we can enter a program:
IMG20240303140222.jpg
What you're seeing here is address 00 000 000 - yes, that's right, it's uses OCTAL. This works very well for input of data, and here you can see that that address contains data, specifically D4 is illuminated.
So for this machine octal works out as follows in binary for data and address lines:
Screenshot 2024-03-03 at 15.24.51.png
So in the case above, the value of D4 is 2, so in octal it's 0 2 0, and that is stored in address 0 0 0. That value of 2 is just random garbage left over from boot time.
To enter the first line of our code into address 0 0 0, we need to enter a value. Since it is in the reset state, we are in the correct memory location as none of the address LEDs are lit.
The first line of the code is 041, so to enter that we need to set the switches as follows:
D7 & D6 are off. This gives 0 for the first block of octal.
D5 is on.
D4 & D3 are off. This gives a 4 for the 2nd block of octal.
D2 & D1 are off.
D0 is on. This gives a 1 for the last block of octal.
So with our switches set to 041 we are ready to insert that value into memory. We do this by pressing 'deposit', and this inserts the value into the currently selected memory location, 00 000 000.
So we now need to next insert 256 into memory location 00 000 001. We do the same thing, but this time set the switches to represent 256 in octal, so D7 would be on, A5 & A3 would be on and A2 & A1 would be on.
If we just clicked the 'deposit' switch up, that would overwrite the 041 we already wrote to 00 000 000, so this time we use the 'deposit next' option, and it will automatically insert the value of 256 into 00 000 001.
It's really quite intuitive, and in fact once you have entered your program you can even edit it by using 'examine/examine next' to view the contents of memory, and if wrong using 'deposit' to overwrite it with a new value.
For example, you can see a number of LEDs illuminated here:
IMG20240303141457.jpg
Taking the address lines first we can see that A3, A2 and A0 are illuminated. this gives us an address of 00 001 101 which converts to 015.
Looking at the data we can see that D7, D6 and D3 are illuminated, giving us the value of 11 001 000 which converts to 310.
Looking at the original listing at the beginning of the post we can see that address 015 should contain the value of 310, and that's in fact exactly what it does.
Does it run though? Actually it does, but of course with no punch tape reader, it sits there waiting and waiting for input that is never coming.
I find this quite a thrilling little experiment, and I can imagine it will be a very useful tool to help in learning some more machine code.
I also painted the screws at the bottom silver, and I think it looks a lot better now :)
IMG20240303140139.jpg
You do not have the required permissions to view the files attached to this post.