mirror of
https://github.com/pkimpel/retro-220.git
synced 2026-01-19 09:28:03 +00:00
1. Initial Cardatron implementation with CardatronInput (card reader). 2. Implement default Pi demo program at address 0300. 3. Implement WINTER.PI card-load deck to boot from card reader 1 and run at address 0500. 4. Fix syntax typos in tools/BAC-Assembler.html.
154 lines
7.9 KiB
Plaintext
154 lines
7.9 KiB
Plaintext
Assembler for the Burroughs 220 BALGOL Compiler & Intrinsics
|
|
Pass 1 Listing Pass 2 Listing
|
|
|
|
|
|
END OF PASS 1, ERRORS = 0
|
|
|
|
SYMBOL TABLE
|
|
|
|
363 A 364 B 1 BMOD 365 C 369 COL
|
|
377 CR 366 D 316 DO 367 E 370 ECOL
|
|
334 ENDDO 362 ENDL1 1000 F 375 FIVE 371 FLIM
|
|
368 G 308 L1 376 N80 373 ONE 1 RLO
|
|
374 TWO 372 ZERO
|
|
|
|
PRINT FIRST 800 DIGITS OF PI
|
|
ADAPTED FROM C PROGRAM B DIK WINTER OF CWI, AMSTERDAM
|
|
3 0000 LOCN 0300
|
|
4 0300 0 0000 10 0371 CAD FLIM
|
|
5 0301 0 0000 40 0365 STA C C=FLIM
|
|
6 0302 0 0000 10 0363 CAD A
|
|
7 0303 0 0001 48 0010 SRT 10
|
|
8 0304 0 0000 15 0375 DIV FIVE A DIV 5
|
|
9 0305 0 0000 42 0365 LDB C FOR (B=C; B>=0; --B)
|
|
10 0306 1 0000 40 1000 STA - F F[B]=A DIV 5
|
|
11 0307 0 0001 21 0306 DBB *-1,1
|
|
|
|
13 0308 0 0000 10 0365 L1 CAD C START OF OUTER LOOP
|
|
14 0309 0 0000 14 0374 MUL TWO
|
|
15 0310 0 0001 40 0368 STR G G=C*2
|
|
16 0311 0 0000 37 0362 BFR ENDL1,00,00 IF G EQL 0, BRANCH OUT OF LOOP
|
|
17 0312 0 0000 46 0366 CLL D D=0
|
|
18 0313 0 0000 10 0365 CAD C
|
|
19 0314 0 0000 40 0364 STA B B=C
|
|
20 0315 0 0000 42 0364 LDB B
|
|
|
|
22 0316 1 0000 10 1000 DO CAD - F START OF INNER LOOP
|
|
23 0317 0 0000 14 0363 MUL A F[B]*A
|
|
24 0318 0 0001 49 0010 SLT 10 SHIFT PRODUCT TO RA
|
|
25 0319 0 0000 12 0366 ADD D
|
|
26 0320 0 0000 40 0366 STA D D+=F[B]*A
|
|
27 0321 0 0001 48 0010 SRT 10 SAVE NEW D IN RR
|
|
28 0322 0 0001 27 0368 DFL G,00,1 G-=1
|
|
29 0323 0 0000 15 0368 DIV G D DIV G
|
|
30 0324 1 0001 40 1000 STR - F F[B]=D MOD G
|
|
31 0325 0 0000 40 0366 STA D D=D DIV G
|
|
32 0326 0 0001 27 0368 DFL G,00,1 G-=1
|
|
33 0327 0 0000 10 0364 CAD B
|
|
34 0328 0 0000 13 0373 SUB ONE
|
|
35 0329 0 0000 40 0364 STA B B-=1
|
|
36 0330 0 0000 36 0334 BFA ENDDO,00,00 IF B EQL 0, BRANCH OUT OF INNER LOOP
|
|
37 0331 0 0000 14 0366 MUL D
|
|
38 0332 0 0001 40 0366 STR D D*=B
|
|
39 0333 0 0001 21 0316 DBB DO,1 DECREMENT RB, REPEAT INNER LOOP IF >= 0
|
|
|
|
41 0334 0 0014 27 0365 ENDDO DFL C,00,14 C-=14
|
|
42 0335 0 0000 10 0366 CAD D
|
|
43 0336 0 0001 48 0010 SRT 10
|
|
44 0337 0 0000 15 0363 DIV A D DIV A
|
|
45 0338 0 0000 12 0367 ADD E RA=E+D DIV A
|
|
46 0339 0 0001 40 0367 STR E E=D MOD A
|
|
|
|
FORMAT 4 DIGITS FOR SPO OUTPUT
|
|
49 0340 0 0001 48 0003 SRT 3 ISOLATE HIGH-ORDER DIGIT IN A
|
|
50 0341 0 0000 12 0376 ADD N80 CONVERT 1ST DIGIT TO ALPHA
|
|
51 0342 0 0000 49 0001 SLA 1
|
|
52 0343 0 0001 49 0001 SLT 1
|
|
53 0344 0 0000 12 0376 ADD N80 CONVERT 2ND DIGIT TO ALPHA
|
|
54 0345 0 0000 49 0001 SLA 1
|
|
55 0346 0 0001 49 0001 SLT 1
|
|
56 0347 0 0000 12 0376 ADD N80 CONVERT 3RD DIGIT TO ALPHA
|
|
57 0348 0 0000 49 0001 SLA 1
|
|
58 0349 0 0001 49 0001 SLT 1
|
|
59 0350 0 0000 12 0376 ADD N80 CONVERT 4TH DIGIT TO ALPHA
|
|
60 0351 0 0000 49 0002 SLA 2 INSERT TRAILING SPACE
|
|
61 0352 0 0002 43 0000 LSA 2 SET SIGN TO TWO FOR ALPHA WORD
|
|
62 0353 0 0000 40 0364 STA B STORE IN WORD BUFFER
|
|
63 0354 0 0010 09 0364 SPO B,1
|
|
64 0355 0 0405 26 0369 IFL COL,04,5 CHECK FOR FULL LINE ON SPO
|
|
65 0356 0 0000 10 0369 CAD COL
|
|
66 0357 0 0000 18 0370 CFA ECOL
|
|
67 0358 0 0001 34 0308 BCL L1 IF COL < ECOL, BRANCH
|
|
68 0359 0 0010 09 0377 SPO CR,1 OUTPUT NEWLINES
|
|
69 0360 0 0000 46 0369 CLL COL CLEAR COLUMN COUNTER
|
|
70 0361 0 0000 30 0308 BUN L1
|
|
71 0362 0 0000 00 7557 ENDL1 HLT 7557
|
|
|
|
SCALARS
|
|
74 0363 0 0000 01 0000 A CNST 10000
|
|
75 0364 0 0000 00 0000 B CNST 0
|
|
76 0365 0 0000 00 0000 C CNST 0
|
|
77 0366 0 0000 00 0000 D CNST 0
|
|
78 0367 0 0000 00 0000 E CNST 0
|
|
79 0368 0 0000 00 0000 G CNST 0
|
|
80 0369 0 0000 00 0000 COL CNST 0
|
|
81 0370 0 0000 00 0050 ECOL CNST 50
|
|
82 0371 0 0000 00 2800 FLIM CNST 2800
|
|
83 0372 0 0000 00 0000 ZERO CNST 0
|
|
84 0373 0 0000 00 0001 ONE CNST 1
|
|
85 0374 0 0000 00 0002 TWO CNST 2
|
|
86 0375 0 0000 00 0005 FIVE CNST 5
|
|
87 0376 0 0000 00 0080 N80 CNST 80
|
|
88 0377 2 0202 02 1616 CR CNST 20202021616 NEWLINES
|
|
|
|
90 0378 LOCN 1000
|
|
91 1000 F DEFN *
|
|
92 1000 LOCN *+2800
|
|
93 3800 FINI 300
|
|
|
|
|
|
END OF PASS 2, ERRORS = 0
|
|
|
|
|
|
|
|
|
|
3141 5926 5358 9793 2384 6264 3383 2795 0288 4197
|
|
|
|
1693 9937 5105 8209 7494 4592 3078 1640 6286 2089
|
|
|
|
9862 8034 8253 4211 7067 9821 4808 6513 2823 0664
|
|
|
|
7093 8446 0955 0582 2317 2535 9408 1284 8111 7450
|
|
|
|
2841 0270 1938 5211 0555 9644 6229 4895 4930 3819
|
|
|
|
6442 8810 9756 6593 3446 1284 7564 8233 7867 8316
|
|
|
|
5271 2019 0914 5648 5669 2346 0348 6104 5432 6648
|
|
|
|
2133 9360 7260 2491 4127 3724 5870 0660 6315 5881
|
|
|
|
7488 1520 9209 6282 9254 0917 1536 4367 8925 9036
|
|
|
|
0011 3305 3054 8820 4665 2138 4146 9519 4151 1609
|
|
|
|
4330 5727 0365 7595 9195 3092 1861 1738 1932 6117
|
|
|
|
9310 5118 5480 7446 2379 9627 4956 7351 8857 5272
|
|
|
|
4891 2279 3818 3011 9491 2983 3673 3624 4065 6643
|
|
|
|
0860 2139 4946 3952 2473 7190 7021 7986 0943 7027
|
|
|
|
7053 9217 1762 9317 6752 3846 7481 8467 6694 0513
|
|
|
|
2000 5681 2714 5263 5608 2778 5771 3427 5778 9609
|
|
|
|
1736 3717 8721 4684 4090 1224 9534 3014 6549 5853
|
|
|
|
7105 0792 2796 8925 8923 5420 1995 6112 1290 2196
|
|
|
|
0864 0344 1815 9813 6297 7477 1309 9605 1870 7211
|
|
|
|
3499 9999 8372 9780 4995 1059 7317 3281 6096 3185
|