G80 Lab

simulatore G80/Z80 — anteprima Fase 3

Programma (assembly)

Esecuzione

Memoria

verde = PC · rosso = breakpoint · clic su un byte per modificarlo
— clic su una riga del disassemblaggio = breakpoint

CPU — vista a blocchi

—
G80 MICROPROCESSOR IR 00 CU A 00 F — flag ALU BC 00 00 DE 00 00 HL 00 00 IX 0000 IY 0000 SP 0000 PC 0000 MAR 0000 segnali di bus bus: — istr:

Micro-operazioni

…

Periferiche

LED — porta 0x20

0x00 = 0

Display 7 segmenti — 0xA0 / 0xA1

A0: 0x00 (0) · A1: 0x00 (0)

LCD 20×10 — porta 0xD0

Chart recorder — 0x30..0x33

Potenziometro — 0x40

valore: 128

Motore 0xB0 · Kiln 0xF0/F1 · Beeper 0x60

motore, step: 0
kiln: 20 · riscaldatore off
beep: —

Interruttori — porta 0x90

Tastiera — porta 0xC0

l'ultimo tasto premuto viene letto una volta

Keypad 16 tasti — 0x80/0x81

Porte (port monitor)

ultimo valore letto/scritto per ogni porta usata dal programma
nessun accesso alle porte (finora)

Log I/O


      
Aiuto rapido (clicca per aprire)
Per iniziare
1. scrivi (o scegli) un programma → Assembla & Carica → Esegui
2. Passo esegue una istruzione; velocità regola quante istruzioni per fotogramma (preset 🐢 lenta = per seguire conteggi e LED, ⚡ veloce = per andare spediti)
3. clic su una riga del disassemblaggio = breakpoint (clic di nuovo o "✕ Togli" per toglierlo)
4. clic su un byte in memoria per modificarne il valore
5. linguetta Instruction Trace (accanto al disassemblaggio): registro delle istruzioni eseguite con registri e T-state; il pannello Porte mostra l'ultimo valore per ogni porta usata
6. pannello CPU — vista a blocchi: IR, A/flag, coppie, IX/IY/SP/PC, MAR e i segnali di bus dell'ultima operazione; ⛶ modalità LIM per proiettare (barra comandi integrata: Spazio = Passo, C = ciclo, R = Esegui/Pausa, Esc = chiudi)
7. pannello Micro-operazioni: la sequenza di trasferimenti che la CPU esegue per l'ultima istruzione (fetch + ALU + memoria); ▶ micro-passo per scorrerla
8. clic su un registro (A, BC, PC…) per modificarne il valore · ⌁ ciclo avanza di una micro-operazione per volta · linguette: Listing (.lst) e scelta dei messaggi del trace (solo istruzioni / +fetch / +micro-operazioni)

Porte delle periferiche
0x20 LED · 0x30‑33 chart · 0x40 potenziometro · 0x60 beeper
0x70/71 timer (CTC) · 0x80/81 keypad · 0x90 interruttori
0xA0/A1 7 segmenti · 0xB0 motore · 0xC0 tastiera · 0xD0 LCD
0xE0/E1 counter/nastro · 0xF0/F1 kiln
Apri .asm… / Salva .asm…: carica un programma dal disco o scarica il sorgente che hai nell'editor (il testo si salva comunque da solo nel browser).

Esempio minimo
out (0x20), a accende i LED secondo A · in a, (0x90) legge gli interruttori

Interrupt (IM2): scrivi il vettore (valore < 0x80) sulla porta di controllo, poi 0x83 per abilitare; metti la tabella in .org 0x0010, imposta I, IM 2, EI; nel servizio EI + RETI.

Non supportato dal G80: DAA, LD R,A, LD A,R, registri IXH/IXL, SLL.

Manuale completo: file MANUALE.html (nella cartella).