Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; *physical memory map*
- ;-----------------------
- ;- ROM -
- ;- 0.5 MB -
- ;- 0x80000-0xFFFFF -
- ;-----------------------
- ;- RAM -
- ;- 0.5 MB -
- ;- 0x00000-0x7FFFF -
- ;-----------------------
- CPU 286
- BITS 16
- TIMES 0x80000-($-$$) DB 0 ;Fill bottom half of ROM with zeros.
- ;Bottom half of address space used by RAM.
- ;Controlled with A19 decode.
- ORG 0x8000 ;Usable ROM starts at physical address 0x80000
- TOP: ;physically at 0x80000 in ROM
- CLI ;disable interrupts
- ;MOV AX, code
- ;MOV DS, AX
- ;*** SETUP REGISTERS **********************************
- MOV AX, 0X0
- ; ;code segment
- MOV DS, AX ;data segment
- MOV ES, AX ;extra segment
- MOV SS, AX ;stack segment
- MOV SP, AX ;Start at 0, will wrap around to FFFE
- ;*** /SETUP REGISTERS *********************************
- LOOP:
- CALL ONE
- CALL TWO
- CALL THREE
- CALL FOUR
- JMP LOOP
- ONE:
- MOV AL, 0x33 ;00110011
- OUT 0x02, AL
- RET
- TWO:
- MOV AL, 0xCC ;11001100
- OUT 0x04, AL
- RET
- THREE:
- MOV AL, 0xAA ;10101010
- OUT 0x02, AL
- RET
- FOUR:
- MOV AL, 0x55 ;01010101
- OUT 0x04, AL
- RET
- TIMES 0xFFFF0-($-$$) NOP ;Fill ROM with NOPs up to startup address
- ;(upper portion of 1 MB addr space)
- ;This will get to 0xFFFF0
- RESET: ;at 0xFFFF0 Processor starts reading here
- JMP 0x8000:0x0 ;EA 00 00 00 80 Jump to TOP: label
- TIMES 0x100000-($-$$) DB 1 ;Fill the rest of ROM with bytes of 0x01
Advertisement
Add Comment
Please, Sign In to add comment