@Aleksandar_M puno ti hvala na ovim informacijama koliko vidim ima tu dosta da se uci 
Ne treba mešati 8-pinski EEPROM čip (sa dva "E") u koji se snimaju programi za izvršavanje na Galaksiji, i 28-pinski EPROM čip (sa jednim "E") u kojem je BASIC.ali kako idem sve dublje u otkrivanje sta sve treba za jedan obican zvucni dodatak za galaksiju 2024 sve je vise komplikovano, znaci evo primer samo da bi ubacio taj asembler program za nove komande u BASIC u eeprom fles morao bi da skidam sa ploce eeprom SMD fles ili da ga ostavim pa da dodam ISP header sa 6 pinova i programiram ga preko USB-SPI programatora na primer CH341A i opet ima jos svasta ma to uopste nije lako... mozda najbolje da ja eksperimentisem samo sa arduinom i tim AY-3-8910 cipom![]()
Razumem al jednostavnije mi da kupim a vec imam u rezervi jedan nov prazan 27C512 eprom cip nego da koristim UV brisac za eprom cipove.ROM sa stare Galaksije ne može da radi na Galaksiji 2024 - video rutina je promenjena, druga je frekvencija slike i linijska frekvencija. Ako bi uopšte bilo slike, ona bi bila znatno izobličena. Takođe, u starom ROM-u nema naredbi za snimanje i čitanje iz EEPROM-a.
Osim EPROM programatora, potreban je i UV brisač EPROM čipova.
https://dejanristanovic.com/refer/galrom2.htm ovde je objasnjeno inicijalizacija ROM 2 al na staroj galaksiji nema objasnjeno kako to na novoj galaksiji izvesti posto nije isto a i eksperimentisanje sa masinskim jezikom i taj asembler u novoj galaksiji nije bas tako lako za pocetnike jer mozes slucajno nesto usnimiti gde ne treba al bi trebao prvo usnimiti originalni ROM operativni sistem i taj CHAR GEN sa galaksije 2024 na posebna 2 nova eprom cipa u slucaju da nesto zabrljam u tom masinskom jeziku,,,
LPRINT, LLIST, LDUMP, INP i OUT sada ukinute i kod je uklonjen iz operativnog sistema. Ostale komande iz ROM-a B, kao što su matematičke funkcije, asembler i pretraživanje, funkcionišu normalno
Ključne razlike u odnosu na kompajler
zcc +gal -create-app -o PUTANJA_IZLAZNOG_FOLDERA VAS_KOD.asm
ROMPRINT EQU 0x0937 ; ROM routine: prints zero-terminated string
PUBLIC _main:
; --- Main program ---
_main:
LD DE, message ; DE = address of string
print: CALL ROMPRINT ; print it
;JP $ ; infinite loop (stay here)
; --- Data section ---
message:
DEFM "ZDRAVO SVETE!"
DEFB 0 ; zero terminator (end of string)
#include <stdint.h>
#include "zgalaksija.h"
// === Main Loop ===
void main() {
gal_cls();
gal_gotoxy(0, 0);
gal_puts("ZDRAVO SVETE!");
//while (1) {}
}
/* Header file with specific GALAKSIJA low-level functions */
#define z80_bpoke(a,b) (*(unsigned char *)(a) = b)
#define z80_wpoke(a,b) (*(unsigned int *)(a) = b)
#define z80_lpoke(a,b) (*(unsigned long *)(a) = b)
#define z80_bpeek(a) (*(unsigned char *)(a))
#define z80_wpeek(a) (*(unsigned int *)(a))
#define z80_lpeek(a) (*(unsigned long *)(a))
#define SCREEN_ADDR 0x2800
#define RND_ADDR 0x2AA7
unsigned char _scr_x, _scr_y;
// Low-level clear the screen and reset internal cursor position
void gal_cls() {
int z;
for (z = 0; z <512; z++) {
z80_bpoke(SCREEN_ADDR + z, 32);
}
_scr_x = 0;
_scr_y = 0;
}
// Set internal position of cursor for low-level putc and call gotoxy
void gal_gotoxy(char x, char y) {
_scr_x = x;
_scr_y = y;
}
// Low-level write character to internal cursor position
void gal_putc(char ch) {
z80_bpoke(SCREEN_ADDR + (_scr_y << 5) + _scr_x, ch);
_scr_x++;
if (_scr_x > 32) {
_scr_x = 0;
_scr_y++;
}
}
// Low-level write string to internal cursor position
int gal_puts (char *str) {
char ch;
int len = 0;
while ((ch = *str) != 0x0) {
z80_bpoke(SCREEN_ADDR + (_scr_y << 5) + _scr_x, ch);
str++;
len++;
_scr_x++;
if (_scr_x > 32) {
_scr_x = 0;
_scr_y++;
}
}
return len;
}
// Fast single-key reader (returns 0 if no key pressed, or one of 1–4 for directions)
extern unsigned char get_key_fast(void) __z88dk_fastcall;
// Bitmask-based key reader for multi-key support (up to 8 bits)
extern unsigned char get_keys(void) __z88dk_fastcall;
// Bitmask return values
#define KEY_LEFT 0x01 // bit 0
#define KEY_RIGHT 0x02 // bit 1
#define KEY_UP 0x04 // bit 2
#define KEY_DOWN 0x08 // bit 3
#define KEY_Z 0x10 // bit 4
#define KEY_X 0x20 // bit 5
#define KEY_SPACE 0x40 // bit 6
// Diagonal directions (combinations)
#define KEY_UP_LEFT (KEY_UP | KEY_LEFT) // 0x05
#define KEY_UP_RIGHT (KEY_UP | KEY_RIGHT) // 0x06
#define KEY_DOWN_LEFT (KEY_DOWN | KEY_LEFT) // 0x09
#define KEY_DOWN_RIGHT (KEY_DOWN | KEY_RIGHT) // 0x0A
zcc +gal -create-app zdravosvete.c
; Galaksija DOT routine by Voja Antonić, optimized for Z88DK
; Fills screen from (0,0) to (63,47) rapidly using _dot
PUBLIC _dot
PUBLIC _undot
PUBLIC _ifdot
_dot:
LD D, H ; X (C passes it in L)
LD E, L ; Y (C passes it in H)
LD A, 0x80
JP pt1
_undot:
LD D, H
LD E, L
LD A, 1
JP pt1
_ifdot:
LD D, H ; X (in L)
LD E, L ; Y (in H)
XOR A ; mode 0 for ifdot
CALL pt1
; result of AND (HL) was done in pt1; we now use Z flag
LD H, 0 ; Return z flag.Place result in L for return
LD L, 0 ; assume OFF
RET Z ; if Zero (pixel is OFF), return 0
LD L, 1 ; else ON
RET
pt1:
PUSH DE
EXX
POP DE
OR A
PUSH AF
LD C,D
PUSH BC
LD BC,0x20
INC E
LD HL,0x2800
goY:
LD D,3
LD A,1
y3:
DEC E
JR Z,gotov
RLCA
RLCA
DEC D
JR NZ,y3
ADD HL,BC
RES 1,H
JR goY
gotov:
LD B,A
EX (SP),HL
RES 7,L
RES 6,L
SRL L
JR NC,parni
RLCA
parni:
LD H,0
POP BC
ADD HL,BC
LD B,A
POP AF
LD A,B
JR NZ,sres
BIT 7,(HL)
JR Z,exret
AND (HL)
exret:
EXX
RET
sres:
PUSH AF
BIT 7,(HL)
JR NZ,sr
LD (HL),0x80
sr:
POP AF
JP M,setxy
CPL
AND (HL)
LD (HL),A
EXX
RET
setxy:
OR (HL)
LD (HL),A
EXX
RET
#include <stdint.h>
#include "zgalaksija.h"
extern unsigned char dot(unsigned int packed_xy) __z88dk_fastcall;
// Elegant macro for use with x, y
#define DOT(x, y) dot(((x) << 8) | (y))
void main() {
gal_cls();
// Box coordinates
int x0 = 0; // left
int y0 = 0; // top
int x1 = 30; // right (12 chars * 8px + margin)
int y1 = 8; // bottom (char height + margin)
// Top and bottom lines
for (int x = x0; x <= x1; x++) {
DOT(x, y0); // top
DOT(x, y1); // bottom
}
// Left and right lines
for (int y = y0; y <= y1; y++) {
DOT(x0, y); // left
DOT(x1, y); // right
}
gal_gotoxy(1, 1);
gal_puts("ZDRAVO SVETE!");
while (1) {} // keep program alive
}
extern unsigned char dot(unsigned int packed_xy) __z88dk_fastcall;
extern unsigned char dot(unsigned int packed_xy) __z88dk_fastcall;
// Elegant macro for use with x, y
#define DOT(x, y) dot(((x) << 8) | (y))
zcc +gal -create-app zdravosvete.c zdot.asm
@Aleksandar m Hvala na informaciji. Znaci kucao bi prvo na primer NEW 50, pa onda ORG 0x2c3a i to je to da na primer ima 50 bajtova kod? A kako bi na primer znao koliko bajtova ce moj kod biti?Možeš, samo oprezno ako koristiš Bejzik.
Zašto, zato što kod Bejzika počenje na adresi 0x2c3a i raste nadole, dok nizovi i stringe rastu odozgo (od RAMTOPa) nadole, i ako se sretunu sa tvojim kodom u jednom trenutku ili sa bezikom, onda će se prepisati jedan preko drugog.
Pogledajte prilog 503211
Ovo se rešava na 2 načina:
1 - možeš da pomeriš Bejzik nadole sa komandom NEW n, gde ti je n broj bajtove od standardne lokacije, dakle da počinje od 0x2c3a+n i tada upisuješ ORG 0x2c3a i tvoj mašinski kod se nalazi na lokaciji od 0x2c3a do 0x2c3a+n
2 - pomeriš RAMTOP, tako da rezervišeš na vrhu RAM-a za sebe "zaštićeni" deo memorije za tvoj kod. RAMTOP sistema promenljiva se nalazi na adresi &2A6A, komandom WORD &2A6A, ((WORD &2A6A)-n) možeš da pomeriš RAMTOP za n bajtova.
dobro to je zvuk sa zx spektruma 48k a jel imala galaksija tako isti zvuk kao sa spektruma 48k? Hteo reci niko nije pravio nesto tako puno muzike melodija i na galaksiji kao sto je to bilo na zx spectrum 48k...
koliko vidim na ovom snimku "Dancing demon" sa stare galaksije vidi se animacija al nema zvuka...
Nisam ranije zapazio ovaj detalj, ali izgleda da je i logo ispred poruke READY izmenjen i više nije isti, kao onaj originalni.
Zna li se zašto je to urađeno, barem je ovo moglo da ostane isto, bez ikakvih posledica, ako ništa drugo zbog verodostojnosti, ako ne zbog nostalgičnih razloga.
Ja, doduše najviše volim onaj logo sa modela Elektronike Inženjering (u vidu stilizovane strelice), ali ovaj je bio prvi i ima neki simbolički značaj.
Follow along with the video below to see how to install our site as a web app on your home screen.
Napomena: this_feature_currently_requires_accessing_site_using_safari