Changeset 41 for branches/simple/Cpu.pas
- Timestamp:
- Aug 12, 2023, 5:46:27 PM (9 months ago)
- Location:
- branches/simple
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/simple
-
Property svn:ignore
set to
lib
simple
simple.lps
simple.res
-
Property svn:ignore
set to
-
branches/simple/Cpu.pas
r40 r41 21 21 A: Byte; 22 22 PC: Byte; 23 function ReadP C8: Byte;23 function ReadProg8: Byte; 24 24 procedure Reset; 25 25 procedure Run; … … 37 37 A: Word; 38 38 PC: Word; 39 function ReadP C8: Byte;40 function ReadP C16: Word;39 function ReadProg8: Byte; 40 function ReadProg16: Word; 41 41 procedure Reset; 42 42 procedure Run; … … 49 49 { TCpu16 } 50 50 51 function TCpu16.ReadP C8: Byte;51 function TCpu16.ReadProg8: Byte; 52 52 begin 53 53 Result := Memory.Read8(PC); … … 55 55 end; 56 56 57 function TCpu16.ReadP C16: Word;57 function TCpu16.ReadProg16: Word; 58 58 begin 59 59 Result := Memory.Read16(PC); … … 77 77 Instruction: TInstruction; 78 78 begin 79 Instruction := TInstruction(ReadP C8);79 Instruction := TInstruction(ReadProg8); 80 80 case Instruction of 81 81 inHalt: Terminated := True; 82 inLoadImmediate8: A := ReadP C8;83 inLoadImmediate16: A := ReadP C16;84 inLoad8: A := Memory.Read8(ReadP C16);85 inLoad16: A := Memory.Read16(ReadP C16);86 inStore8: Memory.Write8(ReadP C16, A);87 inStore16: Memory.Write16(ReadP C16, A);88 inInput8: A := IO.Read8(ReadP C16);89 inInput16: A := IO.Read16(ReadP C16);90 inOutput8: IO.Write8(ReadP C16, A);91 inOutput16: IO.Write16(ReadP C16, A);92 inJump: PC := ReadP C16;82 inLoadImmediate8: A := ReadProg8; 83 inLoadImmediate16: A := ReadProg16; 84 inLoad8: A := Memory.Read8(ReadProg16); 85 inLoad16: A := Memory.Read16(ReadProg16); 86 inStore8: Memory.Write8(ReadProg16, A); 87 inStore16: Memory.Write16(ReadProg16, A); 88 inInput8: A := IO.Read8(ReadProg16); 89 inInput16: A := IO.Read16(ReadProg16); 90 inOutput8: IO.Write8(ReadProg16, A); 91 inOutput16: IO.Write16(ReadProg16, A); 92 inJump: PC := ReadProg16; 93 93 end; 94 94 end; … … 96 96 { TCpu8 } 97 97 98 function TCpu8.ReadP C8: Byte;98 function TCpu8.ReadProg8: Byte; 99 99 begin 100 100 Result := Memory.Read8(PC); … … 118 118 Instruction: TInstruction; 119 119 begin 120 Instruction := TInstruction(ReadP C8);120 Instruction := TInstruction(ReadProg8); 121 121 case Instruction of 122 inLoadImmediate8: A := ReadP C8;123 inLoad8: A := Memory.Read8(ReadP C8);124 inStore8: Memory.Write8(ReadP C8, A);125 inInput8: A := IO.Read8(ReadP C8);126 inOutput8: IO.Write8(ReadP C8, A);122 inLoadImmediate8: A := ReadProg8; 123 inLoad8: A := Memory.Read8(ReadProg8); 124 inStore8: Memory.Write8(ReadProg8, A); 125 inInput8: A := IO.Read8(ReadProg8); 126 inOutput8: IO.Write8(ReadProg8, A); 127 127 inHalt: Terminated := True; 128 inJump: PC := ReadP C8;128 inJump: PC := ReadProg8; 129 129 end; 130 130 end;
Note:
See TracChangeset
for help on using the changeset viewer.