Regel 85: | Regel 85: | ||
==== Bugblue version ==== | ==== Bugblue version ==== | ||
− | There are some jumps because of faulty memory locations. that is why the start address is 176o. | + | There are some jumps because of faulty memory locations. that is why the start address is 176o. CDF field jumps added by MacSimski |
− | < | + | <pre> |
− | + | *176 //LOCATE PROGRAM STARTING AT ADDR 200 | |
− | + | 00176 7300 CLA CLL //CLEAR ACCUMULATOR /CLEAR AC LINK | |
− | + | 00177 7000 NOP // bad memory | |
− | + | 00200 3275 DCA TMP1 //STORE THAT (0) IN TMP1 | |
− | + | 00201 7000 NOP // bad memory | |
− | + | 00202 7000 MAIN, NOP | |
− | + | 00203 1275 TAD TMP1 // load TMP1 | |
− | + | 00204 4225 JMS PRINTNUM // print dit nummer | |
− | + | 00205 7300 CLA CLL | |
− | + | 00206 1277 TAD SPACE | |
− | + | 00207 4265 JMS TTYO // output to tty0 | |
− | + | 00210 6211 CDF 10 | |
− | + | 00211 1675 TAD I TMP1 // indirect laden van TMP1 | |
− | + | 00212 6201 CDF 0 | |
− | + | 00213 4225 JMS PRINTNUM // print dit nummer | |
− | + | 00214 1275 TAD TMP1 // load TMP1 | |
− | + | 00215 7001 IAC // INCREMENT 1 | |
− | + | 00216 3275 DCA TMP1 | |
− | + | 00217 1301 TAD CR | |
− | + | 00220 4265 JMS TTYO // output to tty0 | |
− | + | 00221 7300 CLA CLL | |
− | + | 00222 1300 TAD LF | |
− | + | 00223 4265 JMS TTYO // output to tty0 | |
− | + | 00224 5202 JMP MAIN // tada.wav | |
− | + | ||
− | + | 00225 7000 PRINTNUM, NOP | |
− | + | 00226 3276 DCA TMP3 // store this in tmp3 | |
− | + | 00227 1276 TAD TMP3 // get it. | |
− | + | 00230 7010 RAR | |
− | + | 00231 7012 RTR | |
− | + | 00232 7012 RTR | |
− | + | 00233 7012 RTR | |
− | + | 00234 4304 JMS STUK | |
− | + | 00235 7000 NOP | |
− | + | 00236 7000 HEEL, NOP | |
− | + | ||
− | + | 00237 7300 CLA CLL // clear AC | |
− | + | 00240 1276 TAD TMP3 // load TMP3 | |
− | + | 00241 7012 RTR | |
− | + | 00242 7012 RTR | |
− | + | 00243 7012 RTR // 6 bitwise shift | |
− | + | 00244 4261 JMS PLUS // xor met 0070 | |
− | + | 00245 4265 JMS TTYO // output to tty0 | |
− | + | ||
− | + | 00246 7300 CLA CLL // clear AC | |
− | + | 00247 1276 TAD TMP3 // load TMP3 | |
− | + | 00250 7010 RAR | |
− | + | 00251 7012 RTR // 3 bitwise shift | |
− | + | 00252 4261 JMS PLUS // xor met 0070 | |
− | + | 00253 4265 JMS TTYO // output to tty0 | |
− | + | ||
− | + | 00254 7300 CLA CLL // clear AC | |
− | + | 00255 1276 TAD TMP3 // load TMP3 | |
− | + | 00256 4261 JMS PLUS // xor met 0070 | |
− | + | 00257 4265 JMS TTYO // output to tty0 | |
− | + | 00260 5625 JMP I PRINTNUM | |
− | + | ||
− | + | 00261 7000 PLUS, NOP | |
− | + | 00262 0302 AND AND7 | |
− | + | 00263 1274 TAD PLUS60 | |
− | + | 00264 5661 JMP I PLUS | |
− | + | ||
− | + | 00265 7000 TTYO, NOP //TTY OUTPUT ROUTINE. THE FIRST WORD OF | |
− | + | //A SUBROUTINE MUST BE EMPTY (0) BECAUSE | |
− | + | //THE JMS INSTRUCTION INSERTS THE RETURN | |
− | + | //ADDR IN THIS WORD. | |
− | + | 00266 6046 6046 //WRITE AC TO THE OUTPUT DEVICE (TTY) | |
− | + | 00267 6041 6041 //IF TTY IS READY, SKIP NEXT INSTRUCTION. | |
− | + | 00270 5267 JMP .-1 //TTY IS NOT READY, SO CHECK AGAIN | |
− | + | 00271 7200 CLA //CLEAR AC | |
− | + | 00272 7000 NOP // Memory broken | |
− | + | 00273 5665 JMP I TTYO //RETURN TO CALLER | |
− | + | ||
− | + | 00274 0060 PLUS60, 60 | |
− | + | 00275 0000 TMP1, 0 | |
− | + | 00276 0000 TMP3, 0 | |
− | + | 00277 0040 SPACE, 40 | |
− | + | 00300 0012 LF, 12 | |
− | + | 00301 0015 CR, 15 | |
− | + | 00302 0007 AND7, 7 | |
− | + | 00303 7000 NOP // Memory broken | |
− | + | 00304 7000 STUK, NOP | |
− | + | 00305 7012 RTR // 9 bitwise shift | |
− | + | 00306 4261 JMS PLUS // xor met 0070 | |
− | + | 00307 4265 JMS TTYO // output to tty0 | |
− | </ | + | 00310 5236 JMP HEEL |
+ | $ | ||
+ | </pre> | ||
==== Rick Murphy version ==== | ==== Rick Murphy version ==== |
Versie van 5 okt 2014 21:40
Code for the pdp8/f
for this machine
this code is for the machine in the configuration we got it in.
OS8/SYKES Bootstrap Loader
Pasted on paper on the back of the pdp8 8/e 8/f 8/m Pocket Reference Card
Addr | instr | comment |
---|---|---|
0400 | 1230 | - |
0401 | 6321 | - |
0402 | 6321 | - |
0403 | 7600 | - |
0404 | 6322 | - |
0405 | 5204 | - |
0406 | 6324 | - |
0407 | 7106 | - |
0410 | 7006 | - |
0411 | 3233 | - |
0412 | 6322 | - |
0413 | 5212 | - |
0414 | 6324 | - |
0415 | 7012 | - |
0416 | 7012 | - |
0417 | 0217 | - |
0420 | 1233 | - |
0421 | 3132 | - |
0422 | 2332 | very faint.. |
0423 | 2331 | barely readable |
0424 | 5204 | - |
0425 | 1203 | - |
0426 | 6321 | - |
0427 | 5014 | faint could be 5017 |
0430 | 0401 | faint. |
0431 | ? | writing completely gone |
0432 | ? | writing completely gone |
Ascii print on teletype
On our machine, the Teletype resides not on the standard address but on address XXX
0003 7001 INC AC +1 0004 6446 Output char 0005 6441 if flag skip next 0006 5005 JMP 5 0007 5003 JPM 3
code to dump the core of field 0 to a serial port
Bugblue version
There are some jumps because of faulty memory locations. that is why the start address is 176o. CDF field jumps added by MacSimski
*176 //LOCATE PROGRAM STARTING AT ADDR 200 00176 7300 CLA CLL //CLEAR ACCUMULATOR /CLEAR AC LINK 00177 7000 NOP // bad memory 00200 3275 DCA TMP1 //STORE THAT (0) IN TMP1 00201 7000 NOP // bad memory 00202 7000 MAIN, NOP 00203 1275 TAD TMP1 // load TMP1 00204 4225 JMS PRINTNUM // print dit nummer 00205 7300 CLA CLL 00206 1277 TAD SPACE 00207 4265 JMS TTYO // output to tty0 00210 6211 CDF 10 00211 1675 TAD I TMP1 // indirect laden van TMP1 00212 6201 CDF 0 00213 4225 JMS PRINTNUM // print dit nummer 00214 1275 TAD TMP1 // load TMP1 00215 7001 IAC // INCREMENT 1 00216 3275 DCA TMP1 00217 1301 TAD CR 00220 4265 JMS TTYO // output to tty0 00221 7300 CLA CLL 00222 1300 TAD LF 00223 4265 JMS TTYO // output to tty0 00224 5202 JMP MAIN // tada.wav 00225 7000 PRINTNUM, NOP 00226 3276 DCA TMP3 // store this in tmp3 00227 1276 TAD TMP3 // get it. 00230 7010 RAR 00231 7012 RTR 00232 7012 RTR 00233 7012 RTR 00234 4304 JMS STUK 00235 7000 NOP 00236 7000 HEEL, NOP 00237 7300 CLA CLL // clear AC 00240 1276 TAD TMP3 // load TMP3 00241 7012 RTR 00242 7012 RTR 00243 7012 RTR // 6 bitwise shift 00244 4261 JMS PLUS // xor met 0070 00245 4265 JMS TTYO // output to tty0 00246 7300 CLA CLL // clear AC 00247 1276 TAD TMP3 // load TMP3 00250 7010 RAR 00251 7012 RTR // 3 bitwise shift 00252 4261 JMS PLUS // xor met 0070 00253 4265 JMS TTYO // output to tty0 00254 7300 CLA CLL // clear AC 00255 1276 TAD TMP3 // load TMP3 00256 4261 JMS PLUS // xor met 0070 00257 4265 JMS TTYO // output to tty0 00260 5625 JMP I PRINTNUM 00261 7000 PLUS, NOP 00262 0302 AND AND7 00263 1274 TAD PLUS60 00264 5661 JMP I PLUS 00265 7000 TTYO, NOP //TTY OUTPUT ROUTINE. THE FIRST WORD OF //A SUBROUTINE MUST BE EMPTY (0) BECAUSE //THE JMS INSTRUCTION INSERTS THE RETURN //ADDR IN THIS WORD. 00266 6046 6046 //WRITE AC TO THE OUTPUT DEVICE (TTY) 00267 6041 6041 //IF TTY IS READY, SKIP NEXT INSTRUCTION. 00270 5267 JMP .-1 //TTY IS NOT READY, SO CHECK AGAIN 00271 7200 CLA //CLEAR AC 00272 7000 NOP // Memory broken 00273 5665 JMP I TTYO //RETURN TO CALLER 00274 0060 PLUS60, 60 00275 0000 TMP1, 0 00276 0000 TMP3, 0 00277 0040 SPACE, 40 00300 0012 LF, 12 00301 0015 CR, 15 00302 0007 AND7, 7 00303 7000 NOP // Memory broken 00304 7000 STUK, NOP 00305 7012 RTR // 9 bitwise shift 00306 4261 JMS PLUS // xor met 0070 00307 4265 JMS TTYO // output to tty0 00310 5236 JMP HEEL $
Rick Murphy version
Here's a dump program. It'll dump a field from (by default) location 0 to 7777. This is set up to dump field 1; change the CDF at location 206 to whatever field you want (CDF 20 is 6221; CDF 30 is 6231, etc.) Starting location is in PTR at 0221.
Note that OS/8 usually outputs ASCII with mark parity. That will confuse most modern systems. This code outputs with space parity. Tested on SIMH. Updates to avoid bad memory locations need to be made, of course.
0200 *200 //start address 000200 1221 LOOP, TAD PTR // Get the address 000201 4226 JMS PRINT // Print the address 000202 1222 TAD COLON // Output a space after the address 000203 4255 JMS TTYO 000204 1223 TAD SPACE 000205 4255 JMS TTYO 000206 6211 CDF 10 // Field 1 000207 1621 TAD I PTR // Get the value 000210 6201 CDF 0 // Restore field 000211 4226 JMS PRINT // Print it 000212 1224 TAD CR 000213 4255 JMS TTYO 000214 1225 TAD LF 000215 4255 JMS TTYO 000216 2221 ISZ PTR // Bump the pointer 000217 5200 JMP LOOP 000220 7402 HLT // Done 000221 0000 PTR, 0 // Start address 000222 0072 COLON, ": 000223 0040 SPACE, " 000224 0015 CR, 15 // Octal CR value[B 000225 0012 LF, 12 000226 0000 PRINT, .-. // Print a word 000227 3252 DCA SAVE // Word being printed - address or value 000230 1252 TAD SAVE 000231 7104 CLL RAL // Push one bit into the Link 000232 3252 DCA SAVE 000233 4240 JMS TTYNUM // Print one octal digit at a time 000234 4240 JMS TTYNUM 000235 4240 JMS TTYNUM 000236 4240 JMS TTYNUM 000237 5626 JMP I PRINT 000240 0000 TTYNUM, .-. 000241 1252 TAD SAVE 000242 7004 RAL 000243 7006 RTL // High order digit to low order word 000244 3252 DCA SAVE // Save state 000245 1252 TAD SAVE 000246 0253 AND SEVEN 000247 1254 TAD ZERO 000250 4255 JMS TTYO 000251 5640 JMP I TTYNUM 000252 0000 SAVE, 0 000253 0007 SEVEN, 7 000254 0060 ZERO, "0 000255 0000 TTYO, .-. 000256 6046 6046 000257 6041 6041 000260 5257 JMP .-1 000261 7200 CLA 000262 5655 JMP I TTYO