
Сообщение от
Savoj
А как устроен данный тест что сразу после сброса видит сколько установлено памяти?
Записывает 0x55AA в начало каждых 16кб, сверяет записанное с прочитанным. Если верно - следующие 16 Кб, не верно - кончилась память:
Код:
xor ax, ax ; cause memory check
mov bp, ax ; will clobber the flag
mov bx, ax ; Start at segment 0000h
mov dx, 55AAh ; get pattern
cld ; Strings auto-increment
@@find_mem_size:
xor di, di ; Location XXXX:0
mov es, bx ; load segment
mov [es:di], dx ; write pattern
cmp dx, [es:di] ; compare
jnz @@done_mem_size ; failed, memory end
mov cx, 2000h ; Else zero 16 kilobytes
repz stosw ; with instruction
add bh, 4 ; get next 16K bytes
cmp bh, 0A0h ; Found max legal IBM ram?
jb @@find_mem_size ; no, then check more
@@done_mem_size:
Код не мой, честно спиз... ээ, позаимствован из Super XT/PC BIOS. "Я его лепила из того что было". Сорцы теста: https://zx-pk.ru/threads/24905-instr...l=1#post791655