Seed the RNG based on current date
This commit is contained in:
parent
0661eb0f06
commit
ae8e8e69ce
34
dosdl.asm
34
dosdl.asm
|
@ -5,13 +5,31 @@ org 0x100
|
||||||
|
|
||||||
section .code
|
section .code
|
||||||
|
|
||||||
seed equ 20220224
|
seed_rng_date:
|
||||||
|
; Get date
|
||||||
|
mov ah, 0x2a
|
||||||
|
int 0x21
|
||||||
|
mov [year], cx
|
||||||
|
mov [month], dh
|
||||||
|
mov [day], dl
|
||||||
|
|
||||||
; Seed the rng
|
; addl32 = year * 10000
|
||||||
mov ax, seed & 0xffff
|
mov ax, 10000
|
||||||
mov dx, seed >> 16
|
mul word [year]
|
||||||
mov bp, rng_seed
|
mov bp, addl32
|
||||||
call store32
|
call store32
|
||||||
|
|
||||||
|
; addr32 = month * 100 + day
|
||||||
|
mov ax, 100
|
||||||
|
mul word [month]
|
||||||
|
add ax, [day]
|
||||||
|
mov bp, addr32
|
||||||
|
call store32
|
||||||
|
|
||||||
|
; rng_seed = addl32 + addr32 = year * 10000 + month * 100 + day
|
||||||
|
call add32
|
||||||
|
mov bp, rng_seed
|
||||||
|
call store32
|
||||||
|
|
||||||
select_target:
|
select_target:
|
||||||
; Call rng to get a number
|
; Call rng to get a number
|
||||||
|
@ -716,6 +734,10 @@ mulr32 dd 0
|
||||||
addl32 dd 0
|
addl32 dd 0
|
||||||
addr32 dd 0
|
addr32 dd 0
|
||||||
|
|
||||||
|
year dw 0
|
||||||
|
month dw 0
|
||||||
|
day db 0
|
||||||
|
|
||||||
section .rodata
|
section .rodata
|
||||||
|
|
||||||
not_found_str db ' - word not found$'
|
not_found_str db ' - word not found$'
|
||||||
|
|
Loading…
Reference in New Issue