Classic Computer Magazine Archive PROGRAM LISTING: 89-03a/RANDOM.M65


10 ;RANDOM ATARI, SOURCE CODE
20 ;BY DAVID McINTOSH
30 ;(c)1988, ANTIC PUBLISHING
40       *=  $6400
50       PLA 
60       LDA #23
70       STA 219
80       LDA #172
90       STA 220
0100     LDA #218
0110     STA 221
0120     LDA #126
0130     STA 222
0140     LDX #4
0150 RND1
0155     LDA 204,X
0160     STA 212,X
0170     DEX 
0180     BNE RND1
0185 ;
0190     JSR MULT
0200     JSR MOD231M1
0210     LDX #4
0220 RND2
0225     LDA 228,X
0230     STA 204,X
0240     DEX 
0250     BNE RND2
0255 ;
0260     JSR ROTATL
0270     JSR BTOD
0280     RTS 
0285 ;
0290     *=  1536
0300 ;MULTIPLY FR0 BY FRE GIVING FR1
0310 MULT
0315     LDY #32
0320     LDA #0
0330     LDX #8
0340 ML1
0345     STA 224,X
0350     DEX 
0360     BNE ML1
0365 ;
0370 ML2
0375     LDX #8
0380     CLC 
0390 R1
0395     ROL 224,X
0400     DEX 
0410     BNE R1
0415 ;
0420     LDX #4
0430     CLC 
0440 R2
0445     ROL 218,X
0450     DEX 
0460     BNE R2
0465 ;
0470     BCC ML3
0475 ;
0480     JSR ADDER
0490     LDX #4
0500 MLA
0505     BCC ML3
0507 ;
0510     LDA 224,X
0520     ADC #0
0530     STA 224,X
0540     DEX 
0550     BNE MLA
0555 ;
0560 ML3
0565     DEY 
0570     BNE ML2
0575 ;
0580     RTS 
0585 ;
0590 ;ADD FR0 TO FR1
0600 ADDER
0605     CLC 
0610     LDX #4
0620 ADDR1
0625     LDA 228,X
0630     ADC 212,X
0640     STA 228,X
0650     DEX 
0660     BNE ADDR1
0665 ;
0670     RTS 
0675 ;
0680 ;CONVERT 8 BYTES AT FR1
0685 ;TO MOD 2^31-1
0690 MOD231M1
0695     LDA #0
0700     STA 224
0710     ASL 229
0720     LDX #5
0730 MOD1
0735     ROL 223,X
0740     DEX 
0750     BNE MOD1
0755 ;
0760     LSR 229
0770     LDY #4
0780 MOD2
0785     LDA 228,Y
0790     ADC 224,Y
0800     STA 228,Y
0810     DEY 
0820     BNE MOD2
0825 ;
0830     LDA 224
0840     ADC #0
0850 MOD3
0855     STA 228
0860     ASL 229
0870     ROL 228
0880     LSR 229
0890     LDA 228
0900     BEQ MOD5
0905 ;
0910     ADC 232
0920     STA 232
0930     LDY #3
0940 MOD4
0945     LDA #0
0950     ADC 228,Y
0960     STA 228,Y
0970     DEY 
0980     BNE MOD4
0985 ;
0990     LDA #0
1000     BEQ MOD3
1005 ;
1010 MOD5
1015     RTS 
1017 ;
1020 ;CONVERT BINARY TO DECIMAL
1030 BTOD
1035     LDY #0
1040     LDA #63
1050     STA (203),Y
1060     LDA #0
1070     INY 
1080     STA (203),Y
1090 BD1
1095     JSR MOVE
1100     JSR MUL10
1110     LDA 228
1120     BEQ BD2
1125 ;
1130     LDY #1
1140     BNE BD6
1145 ;
1150 BD2
1155     JSR MOVE
1160     JSR MUL10
1170     LDA 228
1180     BEQ BD4
1185 ;
1190     LDY #1
1200     BNE BD8
1205 ;
1210 BD4
1215     LDY #0
1220     LDA (203),Y
1230     TAX 
1240     DEX 
1250     TXA 
1260     STA (203),Y
1270     BNE BD1
1275 ;
1280 BD5
1285     JSR MOVE
1290     JSR MUL10
1300     LDA 228
1310 BD6
1315     ASL A
1320     ASL A
1330     ASL A
1340     ASL A
1350     STA (203),Y
1360     JSR MOVE
1370     JSR MUL10
1380 BD8
1385     LDA (203),Y
1390     CLC 
1400     ADC 228
1410     STA (203),Y
1420     INY 
1430     CPY #6
1440     BNE BD5
1445 ;
1450     RTS 
1455 ;
1460 ;MOVE FR1 TO FR0
1470 MOVE
1475     LDX #4
1480 MV1
1485     LDA 228,X
1490     STA 212,X
1500     DEX 
1510     BNE MV1
1515 ;
1520     RTS 
1525 ;
1530 ;MULTIPLY FR0 BY 10 GIVING FR1
1540 ;ASSUMED:  FR0 = FR1
1550 MUL10
1555     LDA #0
1560     STA 228
1570     JSR ROTATL
1580     JSR ROTATL
1590     JSR ADDER
1600     LDA 228
1610     ADC #0
1620     STA 228
1630 ;FALL THROUGH TO ROTATL
1640 ;ROTATE LEFT,
1645 ;FROM 227+1 TO 227+5
1650 ROTATL
1655     CLC 
1660     LDX #5
1670 ROTL
1675     ROL 227,X
1680     DEX 
1690     BNE ROTL
1695 ;
1700     RTS 


Back to previous page