pcjs/devices/pc8080/rom/vt100/VT100.map
2016-08-04 15:01:06 -07:00

241 lines
8.3 KiB
Text

0040 . ; 0x0f to NVR latch
0042 . ; invert A (0xf0)
0043 . ; 0xf0 to brightness
0045 . ; zero A
0046 . ; zero D, L, H
0049 . ; next 2K ROM
004A . ; store the current ROM # in B
004B . ; show current ROM on LEDs
004D . ; Checksum over 8 256B blocks
004F . ; Rotate A left
0050 . ; A <- A ^ memory
0051 . ; next memory address
0052 . ; ... repeat until end of block
0055 . ; next block
0056 . ; decrement block count
0057 . ; ... repeat until end of chip
005A . ; Check the value of the accumulator
005B . ; If it's not zero, hang forever
005E . ; Put the ROM # back in the accumulator
005F . ; If it's not 4...
0061 . ; repeat for the next ROM
0065 . ; write 5 to LEDs (turns on L2 and L4)
0067 . ; Test pattern: 0xaa
0069 . ; 0x2c is the top of RAM on the basic board
006B . ;
006D . ; flags buffer &= 0x02 : is AVO installed?
006F . ; if bit 2 is not set, AVO is installed
0072 . ; 0x40 is the top of RAM on the AVO
0074 . ; load HL with top of RAM
0075 . ; dec HL
0076 . ; M <- 0
0078 . ; dec HL
0079 . ; a <- h
007A . ; compare to 1f (top of ROM)
007C . ; continue to zero if not at ROM
0080 . ; read a byte of memory
0082 . ; if it's zero, skip ahead
0088 . ; err
008D . ; err
0090 . ; run test pattern through ram
0093 . ; jump to 00a8 if ok
0099 . ; err
009E . ; ok
00A5 . ; Hang if non-AVO memory
00B3 . ; Repeat mem test with pattern 0x55
00BA . ; zero scratch and screen mem
00BD . ; Set a number of scratch values to fixed values
00C0 . ; .... more memory initialization
00FE . ; Read from keyboard port
0102 . ; copy b <- a
0103 . ; subtract 0x7c from a
0105 . ; jump to 011a if a is a normal key
0108 . ; otherwise h <- a
0109 . ; h++
010A . ; a <- 0x10
0112 . ; load keys flag addresss
0115 . ; or in control bit
0116 . ; store again
0117 . ; jump to end to interrupt
011A . ; load keys flag address
011F . ; load key counter
0120 . ; if overflow.. (>3 keys)
0122 . ; discard keypress and end interrupt
0125 . ; otherwise increment key counter
0126 . ; load key address buffer?
0129 . ; add key counter to address buffer
012C . ; save key to address buffer
02A4 . ; HL <- 0x204e (top of stack)
02A7 . ; DE <- 0x0fb2
02AA . ; B <- 0
02AC . ; memset(0x204e,0,0xfb2)
02AF . ; invert A
02B0 . ; store A in 0x2104
02B3 . ; HL <- 0x2004
02B6 . ; *(0x2052) = 0x2004
02B9 . ; HL <- 0x22d0
02BC . ; *(20f6) = 0x22d0
02C0 . ; 0x2140 = 0xe605
02C3 . ; HL = 0x2000
02C6 . ; DE = 0x02d9
02C9 . ; B = 18
02CB . ; copy 18 bytes from 0x02d9 to 0x2000
02CE . ; HL = 0x3000
02D1 . ; DE = 0x1000
02D4 . ; B = 0xFF
02D6 . ; Set all of attribute RAM to 0xFF and return
02EB . ; HL = 0x0212
02EE . ; Store 0x1202 at 0x212d
02F1 . ; A = 0x35
02F3 . ; 0x212c = 0x35
02F6 . ; A = 1
02F8 . ; 0x205b = 1
02FB . ; 0x2176 = 1
02FE . ; HL = 0x07ff
0301 . ; store 0xff07 at 0x2149
0304 . ; A = 2
0306 . ; 0x2073 = 2
0309 . ; A = 0xf7
030B . ; 0x20fa = 0xf7
030E . ; read flags buffer
0310 . ; And it with 0x04 (check graphics flag)
0312 . ; A=1
0314 . ; if no graphics skip
0317 . ; else store 1 in 0x2079
031A . ; A = 0xff
031C . ; 0x210e = 0xff
031F . ; 0x21ba = 0xff
0322 . ; H = 0x80
0324 . ; L = 0x80
0325 . ; Store 0x8080 at 0x20c0
038B . ; Load memory at DE into accumulator
038C . ; Store it at HL
038D . ; HL++
038E . ; DE++
038F . ; B--
0390 . ; until B is zero
03CF . ; Read from PUSART data
03DE . ; Read from PUSART ctrl
08D4 . ; subtract 5 from A and return if negative
08D7 . ; load jump table at 8e5
08DA . ; double a
08DE . ; hl = X08e5 + 2A
08DF . ; load DE from (HL) little-endian
08E3 . ; zero A
08E4 . ; jump to address
08E7 . ; immediate return
08ED . ; MYSTERY ADDRESS: this isn't even in AVO!!!
0A15 . ; HL = 0x05e6
0A18 . ; 0x2140 = 0xe605
1083 . ; M <- B
1084 . ; HL++
1085 . ; DE--
1086 . ;
1087 . ; A = D | E
1088 . ; repeat if A != 0
1493 . ; Read flags buffer
1495 . ; check if transmit buffer is empty
1497 . ; if zero, return
1498 . ; HL = 0x2144
149B . ; Load from 2144
149C . ; Check if zero
149D . ;
14A0 . ; If not, A = 10 (else A is zero)
14A2 . ;
14A5 . ; or bits from 0x21a5
14A6 . ;
14A9 . ; or bits from 0x2145
14AA . ;
14AB . ; ... and 0x2146
14AC . ;
14AD . ; ... and 0x2147
14AE . ; zero 0x2147
14B0 . ;
14B1 . ; ... and 0x2148
14B2 . ; zero 0x2148
14B4 . ; Write to keyboard buffer
14B6 . ;
14B9 . ; Increment what's at 0x2074
14BA . ; load what's at 0x2077
14BD . ; return if it's not zero
14BE . ;
14BF . ; A = 0x2065
14C2 . ;
14C5 . ; return if [0x2065] | [0x2051] != 0
175B . ; Initialize start of screen RAM and wipe attribute RAM to 0xff
175E . ; B = 0x0a
1760 . ; D = 1
1762 . ; push B, D
1763 . ;
1764 . ; Display wait message
1767 . ; pop D
1768 . ; disable interrupts(???)
1769 . ; HL = 0x217b
176C . ; E = 0x33
176E . ; C = 1
1770 . ; A = 0
1771 . ; 0x21ae = A
1774 . ; A = C
1775 . ; 0x21ad = A
1778 . ; push D,H
1779 . ;
177A . ; A=D
177B . ; or A
177C . ; load A from HL
177D . ; store it in 0x21af
1780 . ; if A is 0 call X18ae
1783 . ; call X18a3
1786 . ; pop H,D
17BE . ; DE = 0x17ec
17C1 . ; B = 7
17C3 . ; HL = 0x21cc
17C6 . ; Initialize 0x21cc to Wait message
17C9 . ; HL = 0xcc71
17CC . ; retarget screen ram to display wait message
17DC . ; DE = 0x17f3
17DF . ; B = 11
17E1 . ; store
18CD . ; Write READ command to NVR latch
18DD . ; Write 0x2fh (standby) to nvr latch
18E1 . ; HL=X21d3
18E4 . ; B= 14 -- we're reading 14 bits
18EF . ; wait for NVR clock L
18F2 . ; shft bit out of nvr
18F9 . ; wait for NVR clock H
18FC . ; read bit and store it in memory
1903 . ; wait for NVR clock L
1907 . ; read next bit
190A . ; send standby
190E . ; DE=0x21d3
1911 . ; B = 14
1913 . ; HL = 0
1916 . ;
1917 . ; load next char
1918 . ; and with NVR data bit
191A . ; rotate NVR bit to high bit
1924 . ; Store the finished data in 21af and 21ae
1928 . ; Load accumulator from 0x21ae -- (0x42)
192B . ; B = 0xff
192D . ; increment B
192E . ; subtract 0x0a from accumulator
1930 . ; repeat while accumulator is positive
1933 . ; add 0x0a to accumulator
1935 . ; HL = 0x21d3
1938 . ; E = 0x23
193A . ; D = 0x14
193C . ;
193D . ; HL++
193E . ; D--
193F . ; repeat until D is zero
1942 . ; Store 0x2f in 21e7
1944 . ; HL = 0x21d3
1947 . ; copy A to E
1948 . ; clear D
194A . ; add DE to HL -- calculate address of bit A
194B . ; Store 0x22 in M
194D . ; HL = 0x21d3
1950 . ; A = 0x0a
1952 . ; A = 0x0a + B
1960 . ;
1964 . ; Flags Buffer & C
1969 . ; Return if B is negative