Post by mirkosoft on Aug 4, 2014 16:24:28 GMT
Hi!
I'm trying to use ROM routines to generate random number. I have to read that it will be stored in FAC#1 after generation.
OK, I found these routines in C128 ROM disassembly:
JMP RND 0 AF57 44887 GENERATE RANDOM F.P. NUMBER
Now it looks like when is packed FAC#1 to RAM1, old value contains still FAC#1 - but it's not true, so I tried to use after generation immediatelly to use Unpack RAM1 to FAC#1:
Then I tried to read FAC#1, never success - always contains the same values - 0,0,0,103
Generation, unpacking and viewing result I did by BASIC line:
SYS33844:SYS44896:?PEEK(100);PEEK(101);PEEK(102);PEEK(103)
Never success... where I do the mistake?
Miro
I'm trying to use ROM routines to generate random number. I have to read that it will be stored in FAC#1 after generation.
OK, I found these routines in C128 ROM disassembly:
JMP RND 0 AF57 44887 GENERATE RANDOM F.P. NUMBER
; Evaluate <rnd>
8434: 20 57 8C JSR $8C57 ; Get Sign
8437: 30 31 BMI $846A
8439: D0 1A BNE $8455
843B: 20 45 A8 JSR $A845 ; Set Bank 15
843E: AD 06 DC LDA $DC06
8441: 85 64 STA $64
8443: AD 07 DC LDA $DC07
8446: 85 66 STA $66
8448: AD 04 DC LDA $DC04
844B: 85 65 STA $65
844D: AD 05 DC LDA $DC05
8450: 85 67 STA $67
8452: 4C 7A 84 JMP $847A
8455: A9 1B LDA #$1B
8457: A0 12 LDY #$12
8459: 20 D4 8B JSR $8BD4 ; Unpack ROM to FAC#1
845C: A9 90 LDA #$90
845E: A0 84 LDY #$84
8460: 20 08 8A JSR $8A08
8463: A9 95 LDA #$95
8465: A0 84 LDY #$84
8467: 20 12 8A JSR $8A12 ; Add Memory At A/Y
846A: A6 67 LDX $67
846C: A5 64 LDA $64
846E: 85 67 STA $67
8470: 86 64 STX $64
8472: A6 65 LDX $65
8474: A5 66 LDA $66
8476: 85 65 STA $65
8478: 86 66 STX $66
847A: A9 00 LDA #$00
847C: 85 68 STA $68
847E: A5 63 LDA $63
8480: 85 71 STA $71
8482: A9 80 LDA #$80
8484: 85 63 STA $63
8486: 20 B6 88 JSR $88B6
8489: A2 1B LDX #$1B
848B: A0 12 LDY #$12
848D: 4C 00 8C JMP $8C00 ; Pack FAC#1 to RAM1
Now it looks like when is packed FAC#1 to RAM1, old value contains still FAC#1 - but it's not true, so I tried to use after generation immediatelly to use Unpack RAM1 to FAC#1:
; Unpack RAM1 to FAC#1
AF60: 4C 85 7A JMP $7A85
; Unpack RAM1 to FAC#1
7A85: 85 24 STA $24
7A87: 84 25 STY $25
7A89: A0 00 LDY #$00
7A8B: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1
7A8E: 85 63 STA $63
7A90: 84 71 STY $71
7A92: C8 INY
7A93: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1
7A96: 85 68 STA $68
7A98: 09 80 ORA #$80
7A9A: 85 64 STA $64
7A9C: C8 INY
7A9D: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1
7AA0: 85 65 STA $65
7AA2: C8 INY
7AA3: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1
7AA6: 85 66 STA $66
7AA8: C8 INY
7AA9: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1
7AAC: 85 67 STA $67
7AAE: 60 RTS
Then I tried to read FAC#1, never success - always contains the same values - 0,0,0,103
Generation, unpacking and viewing result I did by BASIC line:
SYS33844:SYS44896:?PEEK(100);PEEK(101);PEEK(102);PEEK(103)
Never success... where I do the mistake?
Miro