ITS pre-boot blinky program

150 views
Skip to first unread message

Steven A. Falco

unread,
May 9, 2024, 3:26:27 PM5/9/24
to PiDP-10
When the PiDP10 front panel is set to select ITS, simh initially starts running a small hardcoded blinky program. See the bottom of /opt/pidp10/systems/its/boot.pidp for the machine code that is run. The operator then presses STOP followed by READ IN to actually boot ITS.

On my system, based on a Pi5, the blinky pattern runs much too fast to be seen - it just looks like a blur in the LEDs. That doesn't hurt anything, but I wanted to slow it down to a more reasonable rate. Esthetics matter!

Here is what I changed the blinky program to:

; ----------------------------------------------------------------
; so the user has a PiDP-10 front panel and should press STOP then
; READ IN to boot.
; This little blinky program is run until the moment that he does:
d 1000 201000000777
d 1001 241000000001
d 1002 202000001010
d 1003 700540001010
d 1004 201100060650
d 1005 242100000004
d 1006 366100001006
d 1007 324000001001
d 1010 000000000000
go 1000

For those who are curious, I attached the source code that I used when generating the modified blinky program. You can assemble it via:

:midas /l blink 1

where the /l switch is used to generate a listing. The listing gives the octal machine code to plug into boot.pidp.

Steve
blink.1

oscarv

unread,
May 10, 2024, 8:35:54 AM5/10/24
to PiDP-10
Steve,

Nice! Yes, the pre-boot ITS blink pattern is too fast, I was just looking at that for the to-do list. I'll update the boot scripts with your version (if you don't mind).

Kind regards,

Oscar.

Steven A. Falco

unread,
May 10, 2024, 10:00:24 AM5/10/24
to pid...@googlegroups.com
You are absolutely welcome to use my version. And in the spirit of optimizing the code, here is an even shorter version. The original code stored accumulator 0 in memory, then wrote the memory value to the LEDs. But that is not necessary on a PDP-10 because the accumulators are memory mapped. So the version below just uses ac0 directly, saving 2 words. :-)

d 1000 201000000777
d 1001 241000000001
d 1002 700540000000
d 1003 201100060650
d 1004 242100000004
d 1005 366100001005
d 1006 324000001001

I attached the modified source and the listing generated by the midas assembler for completeness.

Steve
blink.2
blink.list

Lars Brinkhoff

unread,
May 11, 2024, 12:26:06 AM5/11/24
to PiDP-10
A while ago I posted a pull request to replace the busy loop with waiting for the 60 Hz clock tick:


d 1000 MOVEI 1,777
d 1001 ROT 1,1
d 1002 DATAO PI,1
d 1003 CONSO 0,1000
d 1004 JRST 1003
d 1005 CONO 0,1000
d 1006 JRST 1001
Reply all
Reply to author
Forward
0 new messages