Newsgroup: it.comp.retrocomputing
Titolo: Problema BASIC IBM su ROM

Salve,
 
Sto cercando di far andare il BASIC IBM 1.10 su ROM con un emulatore che 
sto scrivendo ma mi da un problema: in pratica non mi permette di 
assegnare alcun valore alle variabili e mi restituisce sempre Syntax error.
 
Una cosa tipo:
a=1
Syntax error
 
Tutto il resto pare funzionare, per quel poco che si riesce a fare senza 
variabili... ho provato a leggere dei dati con DATA 1,2,3 e successvo 
READ a,b,c e funziona.
 
Mi stavo chiedendo, non è che per caso ha una qualche forma di 
protezione per evitare che venisse usato sui cloni ?
 
Forse è improbabile dato il periodo storico ma è una settimana che ci 
sbatto la testa e non ne vengo a capo. L'emulazione del processore 
dovrebbe essere corretta almeno al 98%, il resto del sistema non è 
ancora finito ma passa il POST del BIOS ed esegue il BASIC quindi non è 
proprio malaccio...
 
Grazie per qualsiasi suggerimento.
 
Saluti,
Marco

 
 
due cent: non č che prima vuole un comando tipo LET ?
 
LET A=1
 
 
 
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [  da casa  ] ...........

 LET A=1
 
E' abbastanza evoluto da non richiederlo, ma non cambia niente.
Nessuna assegnazione funziona:
 
let a=1
LET A=1
A$="abc"
 
Sempre syntax error. Come se non riconoscesse il simbolo uguale.
 
Anche da programma fa la stessa cosa
 
10 a=1
run
Syntax error in 10
 
Però se faccio
 
print a=1
  0
Ok
 
Per questo mi chiedevo se ci fosse qualche subdola protezione, perchè è 
il classico "malfunzionamento trappola" per scovare i pirati...
 

 protezione per evitare che venisse usato sui cloni ?
 
Naturalmente il giorno dopo aver postato ho trovato il problema... si 
trattava ovviamente di un errore nell'emulazione del processore, avevo 
dimenticato di verificare l'override del segmento DS nelle istruzioni CMPS.
 
Grazie e scusate per il rumore...
 
Saluti,
Marco

 CMPS 
 
Ah, ecco...
 
«Mascetti: Tarapìa tapiòco! Prematurata la supercazzola, o scherziamo?
Vigile: Prego?
Mascetti: No, mi permetta. No, io... scusi, noi siamo in quattro... come se 
fosse antani anche per lei soltanto in due, oppure in quattro anche scribài 
con cofandina? Come antifurto, per esempio?
Vigile: Ma che antifurto, mi faccia il piacere! Questi signori qui stavano 
sonando loro, 'un s'intrometta!
Mascetti: Ma no, aspetti, mi porga l'indice. Ecco, lo alzi così, guardi, 
guardi, guardi... lo vede il dito? Lo vede che stuzzica? E prematura anche! 
Ma allora io le potrei dire, anche con il rispetto per l'autorità, che 
anche soltanto le due cose come vicesindaco, capisce?
Vigile: Vicesindaco? Basta 'osì, mi seguano al commissariato, prego!
Perozzi: No, no, no, attenzione! No! Pàstene soppaltate secondo l'articolo 
12, abbia pazienza, sennò... posterdati, per due, anche un pochino antani 
in prefettura...
Mascetti: Senza contare che la supercazzola prematurata ha perso i contatti 
col tarapìa tapiòco!
Perozzi: Dopo!»
 
 
 
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........

 Ah, ecco... 
 
CMPS: "compares two strings (actually, two arrays)". 
Ganzo.
 
Segmento DS: "Data Segment"
http://www-lia.deis.unibo.it/Courses/FondII/80861.pdf
 
"Lo spazio di memoria indirizzabile dalla CPU è diviso in segmenti logici 
(massimo 64k byte). La CPU può accedere direttamente a 4 segmenti per
volta (massimo 256k byte)"
 
Override di un segmento: 
https://www.includehelp.com/embedded-system/segment-override-prefix-8086-microprocessor.aspx
 
"the effective address is calculated by appending the segment registers value
and adding up the value of the respective offset. But what if we want to choose
some other offset than the assigned one.
This freedom is provided to us in 8086 microprocessor through the concept of
Segment override prefix."
 
Mi pare che la gestione della memoria nei processori x86 possa diventare una
bella fonte di grattacapi...
 
Nuzzler
 

 bella fonte di grattacapi...
 
Abbastanza... ma più per la programmazione che per l'emulazione 
(semprechè ti ricordi di applicare l'override... :-) ).
 
Saranno quasi 30 anni che non programmo in assembler 8086 ma ricordo che 
a volte si impazziva a capire perchè un programma non funzionava per poi 
scoprire che si leggevano i dati dal segmento sbagliato...

 Saranno quasi 30 anni che non programmo in assembler 8086 
 
per me sono di più :/ e ovviamente non ricordo assolutamente nulla
