I was able to get a "Hello World!" to work today. Yay! I know, it's those small accomplishments that keep me going. I found a few examples online, but just couldn't get any to work that didn't seem to spin forever waiting for TSF to flag that it was ready past the first or second character. I ran across an example on page 5-12 of the "
" that I made some edits to it (I hate hard coded string lengths vs being terminated by a character and I prefer programs that do a
to return to the monitor program for OS/8 upon completion vs a simple HLT). It also forced me to retrain my brain to use EDIT after decades of WYSIWYG...
Here's the source I ended up with... I named the file
HELLO3.PA, assembled it with what I believe to be
PAL8 (looks like PAL is an alias for it on my machine) and I ran with the
LOAD/G HELLO3 command.
Best...
/ EVERYBODY NEEDS A HELLO WORLD PROGRAM...
/ THIS MODIFIED FROM THE EXAMPLE ON PAGE 5-12 OF
/INTRODUCTION TO PROGRAMMING PDP-8 FAMILY COMPUTERS
*200
HELLO, CLA CLL /INITIALIZE ACCUMULATOR AND LINK
TLS /TLS TO SET PRINTER FLAG
TAD CHARAC /SET UP INDEX REGISTER
DCA IR1 / FOR GETTING CHARACTERS
NEXT, TAD I IR1 /GET A CHARACTER
SNA /IF AC NOT ZERO THEN SKIP NEXT INSTRUCTION
JMP I [7600 /EXIT PROGRAM AND RETURN TO MONITOR
JMS TYPE /TYPE IT
JMP NEXT /GO FETCH AND TYPE NEXT CHARACTER
TYPE, 0 /TYPE SUBROUTINE
TSF /WAIT FOR PRINTER READY
JMP .-1
TLS /SEND THE CHARACTER TO PRINT
CLA /CLEAR CHARACTER AND
JMP I TYPE /RETURN FROM SUBROUTINE
CHARAC, . /USED AS INTIAL VALUE OF IR1
310 /H
305 /E
314 /L
314 /L
317 /O
240 / (SPACE)
327 /W
317 /O
322 /R
314 /L
304 /D
241 /!
000 /<EOS>
IR1=10
$