Warning

int main(int argc, char * args[]) {
  // Dear Programmer
  // When I wrote this code, only God and
  // I knew how it worked.
  // Now only God knows it!
  //
  // Therefore, if you are trying to optimize
  // this routine and it fails (most surely),
  // please increase this counter as a
  // warning for the next person:
  //
  // total_hours_wasted_here = 254
}

SWAG at markreds.it

Pascal is an imperative e procedural high level programming language. I learnt it at high school and developed applications with Borland Delphi for many years in my first employment.

The Macintosh System OS (the classic one) was developed in Pascal and Apple released its official documentation keeping this language as main reference to developers that wanted to develop for its platform.

Fews days ago I’ve found an interesting site about Pascal programming with lots of examples called SWAG (Sourceware Archive Group).

SWAG is a collection of source code and program examples for the PASCAL programming language. The material has been donated by various PASCAL programmers from around the world, who desire to contribute to the advancement of one of the greatest programming languages there is. SWAG packets are available in 57 different categories covering EVERY aspect of the PASCAL language, and ALL ABSOLUTELY FREE !!! … The material contained in SWAG is intended to be a teaching and learning aid for users of the PASCAL language. Whether you are a beginner or experienced programmer, you’ll find SWAG to be an invaluable source of ideas and information.

So I’ve decided to keep a copy of the last SWAG release. Click here to start reading.

Installare un server svn su debian 10/9/8

SVN è un sistema open source di controllo della versione creato dalla Apache Foundation Team. Permette di tenere traccia di tutte le modifiche effettuate su una raccolta di file e cartelle. Ogni volta che modifichi, aggiungi o elimini un file o una cartella dentro un repository locale che gestisci con Subversion e invii queste modifiche al tuo repository Subversion sul server, viene creata una nuova revisione che riflette queste modifiche. Subversion permette di tornare sempre indietro, guardare e ottenere il contenuto delle revisioni precedenti.

Anche se Subversion è in grado di gestire qualunque genere di file (sia di testo che binario) viene usato in modo particolare con i repository contenente codice sorgente.

Vediamo come si configura Subversion (svn) su un server basato sui sistemi operativi Debian 10, Debian 9 e Debian 8.

1° passo: installare Apache

Per prima cosa occorre installare il server web Apache, necessario ai moduli di Subversion che installeremo successivamente. Aprire quindi una console dei comandi e digitare in sequenza:

$ sudo apt-get update
$ sudo apt-get install apache2

2° passo: installare SVN

Procediamo con l’installazione dei pacchetti di Subversion. Dopodiché riavviamo anche il server Apache:

$ sudo apt-get install subversion libapache2-mod-svn libapache2-svn libsvn-dev
$ sudo a2enmod dav sudo a2enmod dav_svn
$ sudo service apache2 restart

3° passo: configurare Apache e SVN

Adesso occorre modificare alcuni file di configurazione per abilitare le funzioni necessarie. Editiamo per primo il file /etc/apache2/mods-enabled/dav_svn.conf e aggiungiamo le seguenti righe:

<Location /svn>
   DAV svn
   SVNParentPath /var/lib/svn

   AuthType Basic
   AuthName "Subversion Repository"
   AuthUserFile /etc/apache2/dav_svn.passwd
   Require valid-user
</Location>

4° passo: creare il repository SVN

Adesso digitare i seguenti comandi per creare il nostro repository usando il nome myrepo. Naturalmente usatene uno più adatto alle vostre esigenze:

$ sudo mkdir -p /var/lib/svn/
$ sudo svnadmin create /var/lib/svn/myrepo

$ sudo chown -R www-data:www-data /var/lib/svn
$ sudo chmod -R 775 /var/lib/svn

5° passo: creare gli utenti

E’ possibile limitare e proteggere il nostro repository limitandone l’accesso solo agli utenti autorizzati. Scriviamo questi comandi per creare il primo utente:

$ sudo htpasswd -cm /etc/apache2/dav_svn.passwd admin

Aggiungiamo altri utenti:

$ sudo htpasswd -m /etc/apache2/dav_svn.passwd user1
$ sudo htpasswd -m /etc/apache2/dav_svn.passwd user2

6° passo: accedere al repository dal browser web

Apriamo il browser e andiamo al seguente url:

http://example.com/svn/myrepo

Ci verrà chiesto di inserire le nostre credenziali di accesso (nome utente e password).

A questo punto non ci resta che eseguire il checkout del nostro repository in locale, aggiungere e modificare file, quindi inviare le modifiche al server (in gergo commit). Potremmo farlo da riga di comando ma suggerisco di usare gli strumenti integrati degli IDE di sviluppo oppure utilizzare un front-end specifico che si integri con l’ambiente desktop. In ambito Windows suggerisco di usare Tortoise SVN.

Olivetti M24-240 FAQ

Precisazioni e avvertimenti

Questo articolo è tratto dall’originale M24 e M240: Aggiornamento ed ottimizzazione v. 0.5.1 di ESPer. Purtroppo non riesco più a trovarlo in rete e pertanto ho deciso di pubblicarlo qui, con l’intenzione di aggiornarlo con delle mie note personali.

Quanto qui scritto si applica anche all’M21 (versione trasportabile dell’M24), all’M24SP (M24 con clock a 10MHz, 640KB di ram e coprocessore matematico 8087 di serie) e in molti casi a qualunque XT compatibile.

Se non siete abituati ad usare saldatore e cacciavite forse fareste meglio a far fare l’aggiornamento a qualcun’altro più esperto di voi.

Quanto scritto qui non l’ho potuto testare tutto personalmente, quindi non mi prendo responsabilità per danni a voi ed alle vostre macchine.

Tutti i marchi citati sono appartenenti ai legittimi proprietari.

Continua la lettura di Olivetti M24-240 FAQ

Tapuino C64

Il Tapuino è un emulatore hardware del Datassette per il Commodore. Basato su un microcontrollore Arduino Nano, permette di caricare giochi e programmi memorizzati su file da una scheda SD.

Per chi, come è, ha passato giornate intere davanti allo schermo con il Commodore 64 quando era bambino, sa bene il tempo che ci voleva per caricare un gioco dal nastro di una cassetta audio. All’epoca era il media più diffuso per la sua economicità. Solo i più fortunati potevano permettersi il disk drive 1541.

Il sistema era anche poco affidabile e capitava spesso, dopo un certo uso, che la testina perdesse l’allineamento facendo fallire il caricamento proprio alla fine e dopo una lunga attesa!

Il Tapuino non velocizza il processo di caricamento, in quanto emula perfettamente il dispositivo originale, ma almeno lo rende più affidabile.

Il mio Tapuino realizzato con componenti riciclati che avevo in disuso.

Così mi sono cimentato nella costruzione del mio Tapuino, dal momento che avevo già tutti i componenti necessari incluso il cavo ricavato dal mio Datassette non più funzionante.

In realtà il design è davvero semplice e richiede pochi componenti, facilmente reperibili in rete:

  • microcontroller Arduino Nano
  • display LCD con interfaccia I2C
  • 4 tasti push
  • 1 resistenza
  • 1 accoppiatole fotoelettrico

Sul sito ufficiale si trovano schemi e dettagli dei componenti necessari, pertanto non sto a riscriverli qui.

Il montaggio è abbastanza semplice se si ha un minimo di dimestichezza con il saldatore. Anche la compilazione e il caricamento del firmware richiede solo l’IDE di Arduino e la creazione del file config-user.h con le impostazioni personali che nel mio caso si tratta di queste pochissime righe:

#define LCD_USE_1602_LCD_MODULE
#define LCD_I2C_ADDR        0x3F
#define TAPUINO_LANGUAGE_IT
La scheda filata del mio Tapuino

Nella mia versione ho aggiunto il PCB del connettore edge, acquistato tempo fa su ebay. In questa maniera potrei collegarci un Datassette vero e trasferire i nastri sulla scheda SD. Per il momento lo uso per prendere l’alimentazione per il mio SD2IEC (ma questa è un’altra storia).

Tapuino e SD2IEC insieme al mio Breadbin (in fondo c’è il Commodore 128, un altro pezzo della mia collezione).

A questa punto non rimane che prendere una MicroSD, metterci dei file in formato TAP e… iniziare a caricare i proprio giochi preferiti!