Computer / Programmazione / Z80 · 15 giugno 2019 0

LM80C: VPOKE & VPEEK

Negli ultimi giorni ho lavorato per espandere i comandi e le funzioni del NASCOM BASIC aggiungendo VPOKE e VPEEK.

VPOKE è un comando che, come si intuisce dal suo nome, serve per scrivere un valore in una specifica cella di VRAM. VEEP è una funzione che, ovviamente, legge un byte da una cella di VRAM. Queste istruzioni sono necessarie perché il firmware dell’LM80C gestisce il cursore attraverso un interrupt sollevato da un timer dello Z80 CTC: per via di questo modo di opeare, il flusso principale del codice è interrotto ad intervalli regolari e viene eseguito il codice di gestione del cursore. Dato che il VDP ha un buffer dati per la lettura/scrittura dalla/verso la VRAM e dato che ha anche un contatore autoincrementante che, dopo la prima lettura/scrittura, incrementa in maniera automatica il puntatore di indizzo, se usate OUT o IN per leggere/scrivere la VRAM andate incontro a artefatti grafici e errori video perché l’operazione di lettura/scrittura che state facendo potrebbe venir interrotta a metà dal gestore del cursore: questo porterebbe a collisioni fra i due codici che stanno facendo accesso alla VRAM attraverso il VDP ed effetti secondari imprevedibili, come caratteri causali che potrebbero apparire sullo schermo o dati errati scritti nella memoria.

VPOKE e VPEEK evitano questo perché disattivano gli interrupt prima di accedere alla VRAM e li riabilitano dopo che hanno eseguito il loro lavoro. Nel video qui sotto potete vedere le nuove istruzioni in azione:

Il nuovo firmware è marchiato R1.8 ed è disponibile per il download dal mio repository Github.