Changeset 17
- Timestamp:
- Mar 25, 2026, 8:52:34 PM (4 days ago)
- Location:
- branches/test3
- Files:
-
- 3 edited
-
Cpu.pas (modified) (1 diff)
-
FormMain.pas (modified) (4 diffs)
-
Project1.lpi (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/test3/Cpu.pas
r16 r17 234 234 begin 235 235 Move(PMax(@Memory[PC])^, Result, Count); 236 Inc(PC, SizeOf(Count));236 Inc(PC, Count); 237 237 end; 238 238 -
branches/test3/FormMain.pas
r16 r17 17 17 TCpu16A64 = TCpu<Word,QWord,QWord>; 18 18 TCpu24 = TCpu<UInt24,UInt24,UInt24>; 19 TCpu32 = TCpu<DWord,DWord,DWord>; 19 20 TCpu64 = TCpu<QWord,QWord,QWord>; 20 21 … … 28 29 procedure FormShow(Sender: TObject); 29 30 private 30 Buffer: Word; 31 procedure CpuOutput(Addr: Word; Data: Word; Count: Byte); 32 function CpuInput(Addr: Word; Count: Byte): Word; 31 Buffer: QWord; 32 procedure CpuOutput8(Addr: Byte; Data: Byte; Count: Byte); 33 function CpuInput8(Addr: Byte; Count: Byte): Byte; 34 procedure CpuOutput16(Addr: Word; Data: Word; Count: Byte); 35 function CpuInput16(Addr: Word; Count: Byte): Word; 36 procedure CpuOutput32(Addr: DWord; Data: DWord; Count: Byte); 37 function CpuInput32(Addr: DWord; Count: Byte): DWord; 38 procedure CpuOutput64(Addr: QWord; Data: QWord; Count: Byte); 39 function CpuInput64(Addr: QWord; Count: Byte): QWord; 33 40 public 34 Cpu: TCpu16; 41 Cpu8: TCpu8; 42 Cpu16: TCpu16; 43 Cpu32: TCpu32; 44 Cpu64: TCpu64; 35 45 end; 36 46 … … 47 57 procedure TFormMain.FormCreate(Sender: TObject); 48 58 begin 49 Cpu := TCpu16.Create; 50 Cpu.OnInput := CpuInput; 51 Cpu.OnOutput := CpuOutput; 59 Cpu8 := TCpu8.Create; 60 Cpu8.OnInput := CpuInput8; 61 Cpu8.OnOutput := CpuOutput8; 62 Cpu16 := TCpu16.Create; 63 Cpu16.OnInput := CpuInput16; 64 Cpu16.OnOutput := CpuOutput16; 65 Cpu32 := TCpu32.Create; 66 Cpu32.OnInput := CpuInput32; 67 Cpu32.OnOutput := CpuOutput32; 68 Cpu64 := TCpu64.Create; 69 Cpu64.OnInput := CpuInput64; 70 Cpu64.OnOutput := CpuOutput64; 52 71 end; 53 72 54 73 procedure TFormMain.FormDestroy(Sender: TObject); 55 74 begin 56 FreeAndNil(Cpu); 75 FreeAndNil(Cpu8); 76 FreeAndNil(Cpu16); 77 FreeAndNil(Cpu32); 78 FreeAndNil(Cpu64); 57 79 end; 58 80 59 81 procedure TFormMain.FormShow(Sender: TObject); 60 82 begin 61 with Cpu do begin 83 with Cpu8 do begin 84 AddConstN(1, 0, $ab); 85 AddOutputN(1, 0, 0); 86 AddHalt; 87 Run; 88 Memo1.Lines.Add(IntToHex(Buffer, 2)); 89 end; 90 with Cpu16 do begin 62 91 AddConstN(2, 0, $abcd); 63 92 AddOutputN(2, 0, 0); 64 93 AddHalt; 65 94 Run; 66 Memo1.Lines.Add(IntToHex(Buffer)); 95 Memo1.Lines.Add(IntToHex(Buffer, 4)); 96 end; 97 with Cpu32 do begin 98 AddConstN(4, 0, $abcdef01); 99 AddOutputN(4, 0, 0); 100 AddHalt; 101 Run; 102 Memo1.Lines.Add(IntToHex(Buffer, 8)); 103 end; 104 with Cpu64 do begin 105 AddConstN(8, 0, $abcdef0123456789); 106 AddOutputN(8, 0, 0); 107 AddHalt; 108 Run; 109 Memo1.Lines.Add(IntToHex(Buffer, 16)); 67 110 end; 68 111 end; 69 112 70 procedure TFormMain.CpuOutput (Addr: Word; Data: Word; Count: Byte);113 procedure TFormMain.CpuOutput8(Addr: Byte; Data: Byte; Count: Byte); 71 114 begin 72 115 case Addr of … … 75 118 end; 76 119 77 function TFormMain.CpuInput(Addr: Word; Count: Byte): Word; 120 function TFormMain.CpuInput8(Addr: Byte; Count: Byte): Byte; 121 begin 122 case Addr of 123 0: Result := Buffer; 124 end; 125 end; 126 127 procedure TFormMain.CpuOutput16(Addr: Word; Data: Word; Count: Byte); 128 begin 129 case Addr of 130 0: Buffer := Data; 131 end; 132 end; 133 134 function TFormMain.CpuInput16(Addr: Word; Count: Byte): Word; 135 begin 136 case Addr of 137 0: Result := Buffer; 138 end; 139 end; 140 141 procedure TFormMain.CpuOutput32(Addr: DWord; Data: DWord; Count: Byte); 142 begin 143 case Addr of 144 0: Buffer := Data; 145 end; 146 end; 147 148 function TFormMain.CpuInput32(Addr: DWord; Count: Byte): DWord; 149 begin 150 case Addr of 151 0: Result := Buffer; 152 end; 153 end; 154 155 procedure TFormMain.CpuOutput64(Addr: QWord; Data: QWord; Count: Byte); 156 begin 157 case Addr of 158 0: Buffer := Data; 159 end; 160 end; 161 162 function TFormMain.CpuInput64(Addr: QWord; Count: Byte): QWord; 78 163 begin 79 164 case Addr of -
branches/test3/Project1.lpi
r16 r17 38 38 <IsPartOfProject Value="True"/> 39 39 <ComponentName Value="FormMain"/> 40 <HasResources Value="True"/> 40 41 <ResourceBaseClass Value="Form"/> 41 42 </Unit>
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/portvm/chrome/site/your_project_logo.png)