FIB4 - PS8 - Computing & Engineering

Go to content

FIB4

DEC > PDP8 > PAL8 Examples
Booted OS/8

Create the source code file...

.CREATE FIB4.PA
#I
/
/ CALCULATE FIBONACCI SEQUENCE USING DOUBLE PRECISION ARITHMETIC
/ ENTRY AT START (*210)
/
*200
NH, 0
NL, 0 /N
N1H, 0
N1L, 0 / N - 1
N2H, 0
N2L, 0 / N - 2
C, -60
/
*210
START, CLA CLL IAC
DCA N1L / N - 1 = 1
DCA N1H
DCA N2L / N - 2 = 0
DCA N2H
DCA NL / N = 0
DCA NH
/
LOOP, CLA CLL / CLR RESULT
TAD N1L / ADD N-1
TAD N2L / ADD N-2
DCA NL
RAL
TAD N1H
TAD N2H
DCA NH / SAVE IN N
/
CLA CLL
TAD N1L / COPY N1 TO N2
DCA N2L
TAD N1H
DCA N2H
TAD NL / COPY N TO N1
DCA N1L
TAD NH
DCA N1H
/
JMS UDPRNT
NH
/
JMS CRLF / PRINT NEWLINE
ISZ C
JMP LOOP / ROUND AGAIN
JMP 7600 / BACK TO OS/8
/
/ CRLF - PRINT NEWLINE
CRLF, 0
CLA CLL
TAD K215
JMS TYPE
TAD K212
JMS TYPE
JMP I CRLF
K215, 215
K212, 212
/
/ PRINT THE ASCII CHARACTER IN ACC
TYPE, 0
TSF
JMP .-1
TLS
CLA CLL
JMP I TYPE
/
*20
/ DOUBLE WORD DECIMAL PRINT
UDPRNT, 0
CLA CLL
TAD I UDPRNT
DCA UDGET
TAD I UDGET
DCA UDHIGH
ISZ UDGET
TAD I UDGET
DCA UDLOW
TAD UDLOOP
DCA UDCNT
TAD UDADDR
DCA UDPTR
ISZ UDPRNT
UDARND, TAD I UDPTR
ISZ UDPTR
DCA UDHSUB
TAD I UDPTR
ISZ UDPTR
DCA UDLSUB
UDDO, CLL
TAD UDLSUB
TAD UDLOW
DCA UDTEML
RAL
TAD UDHSUB
TAD UDHIGH
SNL
JMP UDOUT
ISZ UDBOX
DCA UDHIGH
TAD UDTEML
DCA UDLOW
JMP UDDO
UDOUT, CLA
TAD UDBOX
TAD UDTWO
TSF
JMP .-1
TLS
CLA CLL
DCA UDBOX
ISZ UDCNT
JMP UDARND
JMP I UDPRNT
/
UDLOOP, -10
UDADDR, UDCONL
UDTWO, 260
UDCNT, 0
UDHIGH, 0
UDLOW, 0
UDHSUB, 0
UDLSUB, 0
UDBOX, 0
UDTEML, 0
UDGET, 0
UDPTR, 0
UDCONL, 3166
4600
7413
6700
7747
4540
7775
4360
7777
6030
7777
7634
7777
7766
7777
7777
/
$

(Control L to end input)
#E

Compile the PAL-8 source

.COMPI FIB4.PA
ERRORS DETECTED: 0
LINKS GENERATED: 1

Run the loader to being the binary file into memory

.R ABSLDR
*FIB4.BN
*^C

Run ODT to start the program

.ODT

00210G

0000001
0000002
0000003
0000005
0000008
0000013
0000021
0000034
0000055
0000089
0000144
0000233
0000377
0000610
0000987
0001597
0002584
0004181
0006765
0010946
0017711
0028657
0046368
0075025
0121393
0196418
0317811
0514229
0832040
1346269
2178309
3524578
5702887

.

Assembled listing:

   1              /
   2              / CALCULATE FIBONACCI SEQUENCE USING DOUBLE PRECISION ARITHMETIC
   3              / ENTRY AT START (*210)
   4              /
   5        0200  *200
   6 00200  0000  NH,     0
   7 00201  0000  NL,     0       /N
   8 00202  0000  N1H,    0
   9 00203  0000  N1L,    0       / N - 1
  10 00204  0000  N2H,    0
  11 00205  0000  N2L,    0       / N - 2
  12 00206  7720  C,      -60
  13              /
  14        0210  *210
  15 00210  7301  START,  CLA CLL IAC
  16 00211  3203          DCA N1L         / N - 1 = 1
  17 00212  3202          DCA N1H
  18 00213  3205          DCA N2L         / N - 2 = 0
  19 00214  3204          DCA N2H
  20 00215  3201          DCA NL          / N = 0
  21 00216  3200          DCA NH
  22              /
  23 00217  7300  LOOP,   CLA CLL         / CLR RESULT
  24 00220  1203          TAD N1L         / ADD N-1
  25 00221  1205          TAD N2L         / ADD N-2
  26 00222  3201          DCA NL
  27 00223  7004          RAL
  28 00224  1202          TAD N1H
  29 00225  1204          TAD N2H
  30 00226  3200          DCA NH          / SAVE IN N
  31              /
  32 00227  7300          CLA CLL
  33 00230  1203          TAD N1L         / COPY N1 TO N2
  34 00231  3205          DCA N2L
  35 00232  1202          TAD N1H
  36 00233  3204          DCA N2H
  37 00234  1201          TAD NL          / COPY N TO N1
  38 00235  3203          DCA N1L
  39 00236  1200          TAD NH
  40 00237  3202          DCA N1H
  41              /
  42 00240  4020          JMS UDPRNT
  43 00241  0200          NH
  44              /
  45 00242  4246          JMS CRLF        / PRINT NEWLINE
  46 00243  2206          ISZ C
  47 00244  5217          JMP LOOP        / ROUND AGAIN
  48 00245  5777@         JMP 7600        / BACK TO OS/8
  49              /
  50              / CRLF - PRINT NEWLINE
  51 00246  0000  CRLF, 0
  52 00247  7300          CLA CLL
  53 00250  1255          TAD K215
  54 00251  4257          JMS TYPE
  55 00252  1256          TAD K212
  56 00253  4257          JMS TYPE
  57 00254  5646          JMP I CRLF
  58 00255  0215  K215,   215
  59 00256  0212  K212,   212
  60              /
  61              / PRINT THE ASCII CHARACTER IN ACC
  62 00257  0000  TYPE,   0
  63 00260  6041          TSF
  64 00261  5260          JMP .-1
  65 00262  6046          TLS
  66 00263  7300          CLA CLL
  67 00264  5657          JMP I TYPE
  68              /
     00377  7600
  69        0020  *20
  70              / DOUBLE WORD DECIMAL PRINT
  71 00020  0000  UDPRNT, 0
  72 00021  7300          CLA CLL
  73 00022  1420          TAD I UDPRNT
  74 00023  3107          DCA UDGET
  75 00024  1507          TAD I UDGET
  76 00025  3101          DCA UDHIGH
  77 00026  2107          ISZ UDGET
  78 00027  1507          TAD I UDGET
  79 00030  3102          DCA UDLOW
  80 00031  1075          TAD UDLOOP
  81 00032  3100          DCA UDCNT
  82 00033  1076          TAD UDADDR
  83 00034  3110          DCA UDPTR
  84 00035  2020          ISZ UDPRNT
  85 00036  1510  UDARND, TAD I UDPTR
  86 00037  2110          ISZ UDPTR
  87 00040  3103          DCA UDHSUB
  88 00041  1510          TAD I UDPTR
  89 00042  2110          ISZ UDPTR
  90 00043  3104          DCA UDLSUB
  91 00044  7100  UDDO,   CLL
  92 00045  1104          TAD UDLSUB
  93 00046  1102          TAD UDLOW
  94 00047  3106          DCA UDTEML
  95 00050  7004          RAL
  96 00051  1103          TAD UDHSUB
  97 00052  1101          TAD UDHIGH
  98 00053  7420          SNL
  99 00054  5062          JMP UDOUT
 100 00055  2105          ISZ UDBOX
 101 00056  3101          DCA UDHIGH
 102 00057  1106          TAD UDTEML
 103 00060  3102          DCA UDLOW
 104 00061  5044          JMP UDDO
 105 00062  7200  UDOUT,  CLA
 106 00063  1105          TAD UDBOX
 107 00064  1077          TAD UDTWO
 108 00065  6041          TSF
 109 00066  5065          JMP .-1
 110 00067  6046          TLS
 111 00070  7300          CLA CLL
 112 00071  3105          DCA UDBOX
 113 00072  2100          ISZ UDCNT
 114 00073  5036          JMP UDARND
 115 00074  5420          JMP I UDPRNT
 116              /
 117 00075  7770  UDLOOP, -10
 118 00076  0111  UDADDR, UDCONL
 119 00077  0260  UDTWO,  260
 120 00100  0000  UDCNT,  0
 121 00101  0000  UDHIGH, 0
 122 00102  0000  UDLOW,  0
 123 00103  0000  UDHSUB, 0
 124 00104  0000  UDLSUB, 0
 125 00105  0000  UDBOX,  0
 126 00106  0000  UDTEML, 0
 127 00107  0000  UDGET,  0
 128 00110  0000  UDPTR,  0
 129 00111  3166  UDCONL, 3166
 130 00112  4600          4600
 131 00113  7413          7413
 132 00114  6700          6700
 133 00115  7747          7747
 134 00116  4540          4540
 135 00117  7775          7775
 136 00120  4360          4360
 137 00121  7777          7777
 138 00122  6030          6030
 139 00123  7777          7777
 140 00124  7634          7634
 141 00125  7777          7777
 142 00126  7766          7766
 143 00127  7777          7777
 144 00130  7777          7777
 145              /
 146              $

     No detected errors
     1 link generated


Back to content