Uit Hack42
Ga naar: navigatie, zoeken
Regel 69: Regel 69:
 
|}
 
|}
  
==== code to dump the core of field 0 to a serial port ====
+
=== 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.
 
There are some jumps because of faulty memory locations. that is why the start address is 176o.
  
Regel 160: Regel 161:
 
     $
 
     $
 
</code>
 
</code>
 +
 +
==== 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.
 +
 +
<pre>
 +
        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
 +
</pre>

Versie van 4 okt 2014 09:12

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

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.

           *176                    /LOCATE PROGRAM STARTING AT ADDR 200
           CLA CLL                 /CLEAR ACCUMULATOR /CLEAR AC LINK
           NOP // bad memory
           DCA TMP1                /STORE THAT (0) IN TMP1
           NOP // bad memory
   MAIN,   NOP
           TAD TMP1                // load TMP1
           JMS PRINTNUM            // print dit nummer
           CLA CLL
           TAD SPACE
           JMS TTYO                // output to tty0
           TAD I TMP1              // indirect laden van TMP1
           JMS PRINTNUM            // print dit nummer
           TAD TMP1                // load TMP1
           IAC                     // INCREMENT 1
           DCA TMP1
           TAD CR
           JMS TTYO                // output to tty0
           CLA CLL
           TAD LF
           JMS TTYO                // output to tty0
           JMP MAIN                // tada.wav
    
   PRINTNUM, NOP
           DCA TMP3                // store this in tmp3
           TAD TMP3                // get it.
           RAR
           RTR
           RTR
           RTR
           JMS STUK
           NOP
   HEEL,   NOP
                                  
           CLA CLL                 // clear AC
           TAD TMP3                // load TMP3
           RTR
           RTR
           RTR             // 6 bitwise shift
           JMS PLUS                // xor met 0070
           JMS TTYO                // output to tty0
                                  
           CLA CLL                 // clear AC
           TAD TMP3                // load TMP3
           RAR
           RTR                 // 3 bitwise shift
           JMS PLUS                // xor met 0070
           JMS TTYO                // output to tty0
                                  
           CLA CLL                 // clear AC
           TAD TMP3                // load TMP3
           JMS PLUS                // xor met 0070
           JMS TTYO                // output to tty0
           JMP I PRINTNUM
                                    
   PLUS,   NOP
           AND     AND7
           TAD     PLUS60
           JMP   I  PLUS
    
   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.
           6446                    /WRITE AC TO THE OUTPUT DEVICE (TTY)
           6441                    /IF TTY IS READY, SKIP NEXT INSTRUCTION.
           JMP .-1                 /TTY IS NOT READY, SO CHECK AGAIN
           CLA                     /CLEAR AC
           NOP // Memory broken
           JMP I TTYO              /RETURN TO CALLER
    
   PLUS60, 60
   TMP1,   0
   TMP3,   0
   SPACE,  40
   LF,     12
   CR,     15
   AND7,   7
           NOP // Memory broken
   STUK, NOP
           RTR             // 9 bitwise shift
           JMS PLUS                // xor met 0070
           JMS TTYO                // output to tty0
   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