Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Type hw
- Private:
- ram(0 To &h1FFFFF) As UByte
- bios(0 To &h7FFFF) As UByte
- Public:
- Declare Sub write8(ByVal addr As ULong, ByVal value As UByte)
- Declare Sub write16(ByVal addr As ULong, ByVal value As UShort)
- Declare Sub write32(ByVal addr As ULong, ByVal value As ULong)
- Declare Function read8(ByVal addr As ULong) As UByte
- Declare Function read16(ByVal addr As ULong) As UShort
- Declare Function read32(ByVal addr As ULong) As ULong
- End Type
- Dim Shared mem As hw
- Sub hw.write8(ByVal addr As ULong, ByVal value As UByte)
- Select Case (addr Shr 16)
- Case &h0000 To &h007F
- ram(addr And &h1FFFFF) = value
- Case &h8000 To &h807F
- ram(addr And &h1FFFFF) = value
- Case &hA000 To &hA07F
- ram(addr And &h1FFFFF) = value
- Case &h1F80
- Case &hFFFE
- End Select
- End Sub
- Sub hw.write16(ByVal addr As ULong, ByVal value As UShort)
- Select Case (addr Shr 16)
- Case &h0000 To &h007F
- For i As Integer = 0 To 1
- ram((addr+i) And &h1FFFFF) = (value Shr (8*i))
- Next
- Case &h8000 To &h807F
- For i As Integer = 0 To 1
- ram((addr+i) And &h1FFFFF) = (value Shr (8*i))
- Next
- Case &hA000 To &hA07F
- For i As Integer = 0 To 1
- ram((addr+i) And &h1FFFFF) = (value Shr (8*i))
- Next
- Case &h1F80
- Case &hFFFE
- End Select
- End Sub
- Sub hw.write32(ByVal addr As ULong, ByVal value As ULong)
- Select Case (addr Shr 16)
- Case &h0000 To &h007F
- For i As Integer = 0 To 3
- ram((addr+i) And &h1FFFFF) = (value Shr (8*i))
- Next
- Case &h8000 To &h807F
- For i As Integer = 0 To 3
- ram((addr+i) And &h1FFFFF) = (value Shr (8*i))
- Next
- Case &hA000 To &hA07F
- For i As Integer = 0 To 3
- ram((addr+i) And &h1FFFFF) = (value Shr (8*i))
- Next
- Case &h1F80
- Case &hFFFE
- End Select
- End Sub
- Function hw.read8(ByVal addr As ULong) As UByte
- Select Case (addr Shr 16)
- Case &h0000 To &h007F
- Return ram(addr And &h1FFFFF)
- Case &h8000 To &h807F
- Return ram(addr And &h1FFFFF)
- Case &hA000 To &hA07F
- Return ram(addr And &h1FFFFF)
- Case &h1F80
- Case &hFFFE
- End Select
- End Function
- Function hw.read16(ByVal addr As ULong) As UShort
- Dim As UShort value
- Select Case (addr Shr 16)
- Case &h0000 To &h007F
- For i As Integer = 0 To 1
- value = ram((addr+i)And &h1FFFFF) Shl (8 - (8*i))
- Next
- Case &h8000 To &h807F
- For i As Integer = 0 To 1
- value = ram((addr+i)And &h1FFFFF) Shl (8 - (8*i))
- Next
- Case &hA000 To &hA07F
- For i As Integer = 0 To 1
- value = ram((addr+i)And &h1FFFFF) Shl (8 - (8*i))
- Next
- Case &h1F80
- Case &hFFFE
- End Select
- Return value
- End Function
- Function hw.read32(ByVal addr As ULong) As ULong
- Dim As ULong value
- Select Case (addr Shr 16)
- Case &h0000 To &h007F
- For i As Integer = 0 To 1
- value = ram((addr+i)And &h1FFFFF) Shl (8 - (8*i))
- Next
- Case &h8000 To &h807F
- For i As Integer = 0 To 3
- value = ram((addr+i)And &h1FFFFF) Shl (8 - (8*i))
- Next
- Case &hA000 To &hA07F
- For i As Integer = 0 To 3
- value = ram((addr+i)And &h1FFFFF) Shl (8 - (8*i))
- Next
- Case &h1F80
- Case &hFFFE
- End Select
- Return value
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement