add font table and bcd support

main
Clyne 2 weeks ago
parent 8fa66b024f
commit 5c625ca6f5
Signed by: clyne
GPG Key ID: 3267C8EBF3F9AFC7

@ -101,9 +101,21 @@ procedure Ada_Chip is
State.Registers (X_Register (ins)) := State.Delay_Timer;
when 16#15# =>
State.Delay_Timer := State.Registers (X_Register (ins));
when 16#18# => null; -- TODO: sound
when 16#1E# =>
State.Address_Register := State.Address_Register +
Address (State.Registers (X_Register (ins)));
when 16#29# =>
State.Address_Register :=
Address (State.Registers (X_Register (ins))) * 5;
when 16#33# => begin
State.Memory (State.Address_Register) :=
State.Registers (X_Register (ins)) / 100;
State.Memory (State.Address_Register + 1) :=
State.Registers (X_Register (ins)) / 10 mod 10;
State.Memory (State.Address_Register + 2) :=
State.Registers (X_Register (ins)) mod 10;
end;
when 16#55# =>
CPU.Reg_Store (State, X_Register (ins));
when 16#65# =>

@ -8,7 +8,25 @@ package CPU is
(Index_Type => Natural, Element_Type => Address);
type Instance is record
Memory : Bank;
Memory : Bank := [
16#F0#, 16#90#, 16#90#, 16#90#, 16#F0#, -- 0
16#20#, 16#60#, 16#20#, 16#20#, 16#70#, -- 1
16#F0#, 16#10#, 16#F0#, 16#80#, 16#F0#, -- 2
16#F0#, 16#10#, 16#F0#, 16#10#, 16#F0#, -- 3
16#90#, 16#90#, 16#F0#, 16#10#, 16#10#, -- 4
16#F0#, 16#80#, 16#F0#, 16#10#, 16#F0#, -- 5
16#F0#, 16#80#, 16#F0#, 16#90#, 16#F0#, -- 6
16#F0#, 16#10#, 16#20#, 16#40#, 16#40#, -- 7
16#F0#, 16#90#, 16#F0#, 16#90#, 16#F0#, -- 8
16#F0#, 16#90#, 16#F0#, 16#10#, 16#F0#, -- 9
16#F0#, 16#90#, 16#F0#, 16#90#, 16#90#, -- A
16#E0#, 16#90#, 16#E0#, 16#90#, 16#E0#, -- B
16#F0#, 16#80#, 16#80#, 16#80#, 16#F0#, -- C
16#E0#, 16#90#, 16#90#, 16#90#, 16#E0#, -- D
16#F0#, 16#80#, 16#F0#, 16#80#, 16#F0#, -- E
16#F0#, 16#80#, 16#F0#, 16#80#, 16#80#, -- F
others => 0
];
Registers : Register_Bank;
Program_Counter : Address := Start_Address;
Address_Register : Address := 0;

Loading…
Cancel
Save