@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
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