Uit Hack42
Ga naar: navigatie, zoeken
Regel 99: Regel 99:
 
00206 1277            TAD SPACE
 
00206 1277            TAD SPACE
 
00207 4265            JMS TTYO                // output to tty0
 
00207 4265            JMS TTYO                // output to tty0
00210 6211            CDF 10
+
00210 6211            CDF 10                 // jump to field 1
 
00211 1675            TAD I TMP1              // indirect laden van TMP1
 
00211 1675            TAD I TMP1              // indirect laden van TMP1
00212 6201            CDF 0
+
00212 6201            CDF 0                  // return to field 0
 
00213 4225            JMS PRINTNUM            // print dit nummer
 
00213 4225            JMS PRINTNUM            // print dit nummer
 
00214 1275            TAD TMP1                // load TMP1
 
00214 1275            TAD TMP1                // load TMP1

Versie van 5 okt 2014 21:42

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                  // jump to field 1
00211 1675            TAD I TMP1              // indirect laden van TMP1
00212 6201            CDF 0                   // return to field 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