Uit Hack42
Ga naar: navigatie, zoeken
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
  
<code>
+
<pre>
            *176                    /LOCATE PROGRAM STARTING AT ADDR 200
+
                      *176                    //LOCATE PROGRAM STARTING AT ADDR 200
            CLA CLL                /CLEAR ACCUMULATOR /CLEAR AC LINK
+
00176 7300            CLA CLL                //CLEAR ACCUMULATOR /CLEAR AC LINK
            NOP // bad memory
+
00177 7000            NOP // bad memory
            DCA TMP1                /STORE THAT (0) IN TMP1
+
00200 3275            DCA TMP1                //STORE THAT (0) IN TMP1
            NOP // bad memory
+
00201 7000            NOP // bad memory
    MAIN,  NOP
+
00202 7000    MAIN,  NOP
            TAD TMP1                // load TMP1
+
00203 1275            TAD TMP1                // load TMP1
            JMS PRINTNUM            // print dit nummer
+
00204 4225            JMS PRINTNUM            // print dit nummer
            CLA CLL
+
00205 7300            CLA CLL
            TAD SPACE
+
00206 1277            TAD SPACE
            JMS TTYO                // output to tty0
+
00207 4265            JMS TTYO                // output to tty0
            TAD I TMP1              // indirect laden van TMP1
+
00210 6211            CDF 10
            JMS PRINTNUM            // print dit nummer
+
00211 1675            TAD I TMP1              // indirect laden van TMP1
            TAD TMP1                // load TMP1
+
00212 6201            CDF 0
            IAC                    // INCREMENT 1
+
00213 4225            JMS PRINTNUM            // print dit nummer
            DCA TMP1
+
00214 1275            TAD TMP1                // load TMP1
            TAD CR
+
00215 7001            IAC                    // INCREMENT 1
            JMS TTYO                // output to tty0
+
00216 3275            DCA TMP1
            CLA CLL
+
00217 1301            TAD CR
            TAD LF
+
00220 4265            JMS TTYO                // output to tty0
            JMS TTYO                // output to tty0
+
00221 7300            CLA CLL
            JMP MAIN                // tada.wav
+
00222 1300            TAD LF
   
+
00223 4265            JMS TTYO                // output to tty0
    PRINTNUM, NOP
+
00224 5202            JMP MAIN                // tada.wav
            DCA TMP3                // store this in tmp3
+
             
            TAD TMP3                // get it.
+
00225 7000    PRINTNUM, NOP
            RAR
+
00226 3276            DCA TMP3                // store this in tmp3
            RTR
+
00227 1276            TAD TMP3                // get it.
            RTR
+
00230 7010            RAR
            RTR
+
00231 7012            RTR
            JMS STUK
+
00232 7012            RTR
            NOP
+
00233 7012            RTR
    HEEL,  NOP
+
00234 4304            JMS STUK
                                 
+
00235 7000            NOP
            CLA CLL                // clear AC
+
00236 7000    HEEL,  NOP
            TAD TMP3                // load TMP3
+
                                           
            RTR
+
00237 7300            CLA CLL                // clear AC
            RTR
+
00240 1276            TAD TMP3                // load TMP3
            RTR            // 6 bitwise shift
+
00241 7012            RTR
            JMS PLUS                // xor met 0070
+
00242 7012            RTR
            JMS TTYO                // output to tty0
+
00243 7012            RTR            // 6 bitwise shift
                                 
+
00244 4261            JMS PLUS                // xor met 0070
            CLA CLL                // clear AC
+
00245 4265            JMS TTYO                // output to tty0
            TAD TMP3                // load TMP3
+
                                           
            RAR
+
00246 7300            CLA CLL                // clear AC
            RTR                // 3 bitwise shift
+
00247 1276            TAD TMP3                // load TMP3
            JMS PLUS                // xor met 0070
+
00250 7010            RAR
            JMS TTYO                // output to tty0
+
00251 7012            RTR                // 3 bitwise shift
                                 
+
00252 4261            JMS PLUS                // xor met 0070
            CLA CLL                // clear AC
+
00253 4265            JMS TTYO                // output to tty0
            TAD TMP3                // load TMP3
+
                                           
            JMS PLUS                // xor met 0070
+
00254 7300            CLA CLL                // clear AC
            JMS TTYO                // output to tty0
+
00255 1276            TAD TMP3                // load TMP3
            JMP I PRINTNUM
+
00256 4261            JMS PLUS                // xor met 0070
                                   
+
00257 4265            JMS TTYO                // output to tty0
    PLUS,  NOP
+
00260 5625            JMP I PRINTNUM
            AND    AND7
+
                                             
            TAD    PLUS60
+
00261 7000    PLUS,  NOP
            JMP  I  PLUS
+
00262 0302            AND    AND7
   
+
00263 1274            TAD    PLUS60
    TTYO,  NOP                    /TTY OUTPUT ROUTINE. THE FIRST WORD OF
+
00264 5661            JMP  I  PLUS
                                    /A SUBROUTINE MUST BE EMPTY (0) BECAUSE
+
             
                                    /THE JMS INSTRUCTION INSERTS THE RETURN
+
00265 7000    TTYO,  NOP                    //TTY OUTPUT ROUTINE. THE FIRST WORD OF
                                    /ADDR IN THIS WORD.
+
                                              //A SUBROUTINE MUST BE EMPTY (0) BECAUSE
            6446                   /WRITE AC TO THE OUTPUT DEVICE (TTY)
+
                                              //THE JMS INSTRUCTION INSERTS THE RETURN
            6441                   /IF TTY IS READY, SKIP NEXT INSTRUCTION.
+
                                              //ADDR IN THIS WORD.
            JMP .-1                /TTY IS NOT READY, SO CHECK AGAIN
+
00266 6046            6046                   //WRITE AC TO THE OUTPUT DEVICE (TTY)
            CLA                    /CLEAR AC
+
00267 6041            6041                   //IF TTY IS READY, SKIP NEXT INSTRUCTION.
            NOP // Memory broken
+
00270 5267            JMP .-1                //TTY IS NOT READY, SO CHECK AGAIN
            JMP I TTYO              /RETURN TO CALLER
+
00271 7200            CLA                    //CLEAR AC
   
+
00272 7000            NOP // Memory broken
    PLUS60, 60
+
00273 5665            JMP I TTYO              //RETURN TO CALLER
    TMP1,  0
+
             
    TMP3,  0
+
00274 0060    PLUS60, 60
    SPACE,  40
+
00275 0000    TMP1,  0
    LF,    12
+
00276 0000    TMP3,  0
    CR,    15
+
00277 0040    SPACE,  40
    AND7,  7
+
00300 0012    LF,    12
            NOP // Memory broken
+
00301 0015    CR,    15
    STUK, NOP
+
00302 0007    AND7,  7
            RTR            // 9 bitwise shift
+
00303 7000            NOP // Memory broken
            JMS PLUS                // xor met 0070
+
00304 7000    STUK, NOP
            JMS TTYO                // output to tty0
+
00305 7012            RTR            // 9 bitwise shift
    JMP HEEL
+
00306 4261            JMS PLUS                // xor met 0070
    $
+
00307 4265            JMS TTYO                // output to tty0
</code>
+
00310 5236    JMP HEEL
 +
              $
 +
</pre>
  
 
==== Rick Murphy version ====
 
==== Rick Murphy version ====

Versie van 5 okt 2014 22: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