Ready64 Forum
Commodore 64 => Aiuto & Domande => Topic aperto da: tostilio - 08 Febbraio 2011, 15:03:27
-
Mi servirebbe un programmino (possibilmente in basic per c64, ma credo che vada bene per ogni computer commodore) che preso un codice ASCII ne restituisca il corrispondente codice video...
Grazie in anticipo
-
Mi servirebbe un programmino (possibilmente in basic per c64, ma credo che vada bene per ogni computer commodore) che preso un codice ASCII ne restituisca il corrispondente codice video...
Grazie in anticipo
Vabbé dai... forse l'ho trovata su un vecchio libro sul C64!
-
http://sta.c64.org/cbm64pettoscr.html (http://sta.c64.org/cbm64pettoscr.html)
e viceversa
http://sta.c64.org/cbm64scrtopet.html (http://sta.c64.org/cbm64scrtopet.html)
ora che sai come, non e' cosi' difficile scrivere 2 righe per farti la conversione.
-
Avevo trovato questo:
# RIF. assembler_per_il_c64_e_vic-20 - pag. 198
SEC
CMP #$40
BCC FINFIX
CMP #$60
BCC SUB.40
SBC #$20
RTS
SUB.40 SEC
SBC #$40
FINFIX RTS
che in effetti non funziona molto bene...
Da qualche parte nel kernel del C64 ci deve pur stare qualcosa di simile già fatto... sta conversione il kernel del c64 la deve fare senz'altro.
Ne farò una a "manella"!
Grazie mille.
-
OK... questa è la funzione che mi serviva (la posto così come l'ho fatta... non mi viene in mente nient'altro di meglio, ma forse quella originale del kernel agisce su gruppi di bit ed è migliore):
byte asciiCode2videoCode(char chr) {
byte retValue;
if((byte)chr < 32) {
retValue = (byte)chr + 128;
} else if((byte)chr < 64) {
retValue = (byte)chr;
} else if((byte)chr < 96) {
retValue = (byte)chr - 64;
} else if((byte)chr < 128) {
retValue = (byte)chr - 32;
} else if((byte)chr < 160) {
retValue = (byte)chr + 64;
} else if((byte)chr < 192) {
retValue = (byte)chr - 64;
} else if((byte)chr < 255) {
retValue = (byte)chr - 128;
} else {
retValue = 94;
}
return retValue;
}
posso dire che funziona... ma i caratteri di controllo (p.es. il return carriage deve essere programmato a parte!).
Grazie ancora.