jos kad pitam za mogucnost dodavanja novih BASIC komandi programom koji se ucitava iz EEPROMA AI mi napise ovo:
Kako dodati nove BASIC komande preko EEPROM-a u Galaksiji 2024
Dodavanje novih ključnih reči (tokena) u Galaksija BASIC zahteva da „patch“ program učitaš iz EEPROM-a pri startu, pre nego što interpreter učita tabele tokena iz ROM-a. Taj program u asembleru mora:
1. Prekopirati originalne tabele (token-lista i tabela adresa rutina) iz ROM-a u RAM
2. Dodati svoje stavke na kraj tih tabela
3. Preusmeriti pokazivače u interpreteru da koristiš RAM-kopije tabela umesto ROM-skih
4. Implementirati svoje rutine koje se pozivaju kad interpreter naiđe na nove token-kodove
Ispod je šablon Z80-asemblerskog „patcher“ programa. Svi naznačeni i adrese (, , itd.) prilagodi prema stvarnim offsetima u tvom Galaksija ROM-u.
1. Organizacija u EEPROM-u
ORG 0x8000 ; adresa na koju EEPROM mapiraš
START:
DI ; isključi prekide
CALL InitTables ; priprema RAM tabele
EI ; uključi prekide
RET ; ostavi kontrolu na normalnom resetu
2. Inicijalizacija RAM tabela
; Adrese u ROM-u gde se nalaze pokazivači na tabele
ROM_TABLE_PTR EQU 0x1234 ; 2-bajtni pointer na token-listu
ROM_DISPATCH_PTR EQU 0x1236 ; 2-bajtni pointer na dispatch-tabelu
; Gde u RAMu smestiti kopije (budi siguran da je slobodno)
RAM_TOKENS EQU 0xC000
RAM_DISPATCH EQU 0xC200
; Broj bajtova token-liste
TOKENS_LEN EQU 0x0080 ; primer: 128 bajtova
; Broj ulaza u dispatch tabeli (svaki 2 bajta adresa)
DISP_ENTRIES EQU 0x0040 ; primer: 64 unosa
InitTables:
; 1) Kopiraj token listu iz ROM u RAM
LD HL, ROM_TABLE_PTR
LD E, (HL) ; lo-byte od pointera
INC HL
LD D, (HL) ; hi-byte od pointera
LD BC, TOKENS_LEN
LD HL, (DE) ; HL → adresa token liste u ROM
LD DE, RAM_TOKENS
LDIR ; block copy
; 2) Dodaj novi token na kraj liste (npr. token "SND")
LD HL, RAM_TOKENS + TOKENS_LEN - 1 ; poslednji 0
LD (HL), 'S'
INC HL
LD (HL), 'N'
INC HL
LD (HL), 'D'
INC HL
LD (HL), 0 ; terminator
; 3) Kopiraj dispatch tabelu
LD HL, ROM_DISPATCH_PTR
LD E, (HL)
INC HL
LD D, (HL)
LD BC, DISP_ENTRIES*2
LD HL, (DE)
LD DE, RAM_DISPATCH
LDIR
; 4) Na kraj dispatch tabele upiši adresu svoje rutine Cmd_SND
; indeks nove komande = broj unosa pre dodavanja
LD HL, RAM_DISPATCH + (DISP_ENTRIES*2)
LD (HL), LO(Cmd_SND)
INC HL
LD (HL), HI(Cmd_SND)
; 5) Preusmeri ROM pokazivače da koriste RAM
; upiši RAM_TOKENS → ROM_TABLE_PTR
LD HL, ROM_TABLE_PTR
LD (HL), LO(RAM_TOKENS)
INC HL
LD (HL), HI(RAM_TOKENS)
; upiši RAM_DISPATCH → ROM_DISPATCH_PTR
LD HL, ROM_DISPATCH_PTR
LD (HL), LO(RAM_DISPATCH)
INC HL
LD (HL), HI(RAM_DISPATCH)
RET
3. Rutina nove komande
; Cmd_SND će se pozvati kada interpreter prepozna token-kod za "SND"
; Ova rutina može pozvati tvoju TEST_AY ili neku drugu subrutinu
Cmd_SND:
; interpreter postavlja HL na početak ostatka linije
; možeš parsirati brojeve ili konstante iz linije
; za primer, samo pozovi mini-BIOS-ovu TEST_AY
CALL TEST_AY
; nakon povratka, interpreter nastavlja obradu
RET
4. Kompilacija i upis u EEPROM
1. Spremi ovaj kod u fajl, npr. .
2. Sastavi ga assemblerom:
sjasmplus gal_patch.asm -b -o gal_patch.bin
3. Upotpuni bin na EEPROM (npr. 27C512) istim postupkom kao ranije (Erase → Program → Verify).
4. Umetni EEPROM u ležište Galaksija 2024 PCB-a. ovo nesto nije dobro rekao

5. Testiranje
• Uključi Galaksiju, u BASIC prompt otkucaj:
SND
Trebalo bi da pozoveš , a on unutar TEST_AY pusti ton.
• Ako želiš parametre, proširi da skenira ASCII-brojeve iza .
Napomena:
– Mape memorije i dužine tabela prilagodi prema tačnoj verziji tvojeg Galaksija ROM-a.
– Uvek proveri originalne pointere u ROM dumpu prije pisanja patch koda.
– Ovaj pristup možeš proširiti za bilo koju novu komandu, jednostavnim dodavanjem token-stringa i zapisa u dispatch tabelu.
kad mi AI kopilot napise ovo pa vi cete mi reci bolje da odustanem od ideje pravljenja sound boarda za galaksiju 2024
