PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » OpenSource » PB ZX Spectrum 128


PB ZX Spectrum 128

Сообщений 1 страница 2 из 2

1

ИИ создал на пурике кросплатформенный эмулятор ZX Spectrum 128 c AY и TR DOS
моя тема на zx-pk.ru где выложил с исходниками
https://zx-pk.ru/threads/36790-pb-zx-spectrum-128.html

0

2

Глянул мельком, ИИ все инструкции ассемблера Z80 впревратил в процедуры?

отрезок кода z80
Код:
; NMOS Z80 decoder, PureBasic 6.40+. No direct assignments to cpu\t.
; CpuFetch owns M1 time and R; operand reads are ordinary three-T reads.
; A pathological DD/FD stream yields after 256 prefixes WITHOUT ending the
; instruction. Reset/load code must call CpuResetDecoder().
Global z80Prefix.i, z80InFlight.i, z80FlagsWritten.i, z80PendingNMI.i

Procedure CpuResetDecoder()
  z80Prefix = 0 : z80InFlight = 0 : z80FlagsWritten = 0 : z80PendingNMI = 0
EndProcedure

Procedure.i CpuInstructionBoundary()
  ProcedureReturn Bool(z80InFlight = 0)
EndProcedure

Procedure.i Z80Parity(v.i)
  v & $FF : v ! (v >> 4) : v ! (v >> 2) : v ! (v >> 1)
  ProcedureReturn (v & 1) ! 1
EndProcedure

Procedure.i Z80SZ(v.i)
  v & $FF
  ProcedureReturn (v & ($80 | $28)) | (Bool(v = 0) * #F_Z)
EndProcedure

Procedure.i Z80SZP(v.i)
  ProcedureReturn Z80SZ(v) | (Z80Parity(v) * #F_PV)
EndProcedure

Procedure Z80Flags(v.i)
  cpu\f = v & $FF : z80FlagsWritten = #True
EndProcedure

Procedure.i Z80IR()
  ProcedureReturn ((cpu\ir & $FF) << 8) | (cpu\rr & $FF)
EndProcedure

Procedure.i Z80Byte()
  Protected v.i = CpuRead(cpu\pc & $FFFF)
  cpu\pc = (cpu\pc + 1) & $FFFF
  ProcedureReturn v & $FF
EndProcedure

Procedure.i Z80Word()
  Protected lo.i = Z80Byte(), hi.i = Z80Byte()
  ProcedureReturn lo | (hi << 8)
EndProcedure

Procedure.i Z80ReadWord(address.i)
  Protected lo.i = CpuRead(address & $FFFF)
  Protected hi.i = CpuRead((address + 1) & $FFFF)
  ProcedureReturn lo | (hi << 8)
EndProcedure


0


Вы здесь » PureBasic - форум » OpenSource » PB ZX Spectrum 128