My Composition Notebooks

Do you STILL love taking notes by hand? I have created different types of composition notebook, even retro-style one, inspired by MOS6502, with Sprite Editor sheets, and some nice goodies. Give them a try: on sale at $4.99!

Continue reading

Posted in Advertisement, English Content | Tagged , , | Leave a comment

Gitea hardening and healthchecks.io

A friend of mine asked some insight on how to harden a Gitea server on Internet. Gitea is a web application for manging git repositories.

Gitea is quite compact and is less feature-rich than GitLab, but it is light and can manage issues, wiki and users.

I easily find two links: one for a docker-compose hardened setup  and a recommended fail2ban configuration.

I was very happy to discover this fail2ban docker image created by the https://www.linuxserver.io/ guys. It is simple to set-up, and provide a very “pluggable” fail2ban configuration.

Digging inside linuxserver repository I find another hidden gem: healthchecks.io, an open-source service to check system status:

Healthchecks.io is an online service for monitoring regularly running tasks such as cron jobs. It uses the Dead man’s switch technique: the monitored system must “check in” with Healthchecks.io at regular, configurable time intervals. When Healthchecks.io detects a missed check-in, it sends out alerts.
From About page

You define your checks and then with a simple “curl” command from your app side, you notify on a regular interval the app “liveness”.

The system notify you only when the system is down, using email or other integrations.

Its setup is super easy and the code is very well designed: kudos and maximum respect to the one-man-band healthcekcs.io’s creator 

Posted in DevOps, English Content, IT Featured, Knowledgebase, Unix | Tagged | Leave a comment

La tastiera del C/64 e del Vic20

Le tastiere moderne sono piene di microchip, e tipicamente offrono una interfaccia seriale per comunicare la vostro PC i tasti premuti.
Negli allegri anni ottanta non era per niente cosi’.

Le tastiere del Vic20 e del C/64 erano interruttori (switch) completamente prive di intelligenza.
Per esempio nel C/64-C/128 il tasto RESTORE, se premuto, attivava direttamente l’interrupt non mascherabile NMI, e quindi funziona anche se il vostro programmino BASIC fosse in un un loop infinito.
Ma procediamo con ordine
Continue reading

Posted in Italian Content, Retro Computing | Tagged , , , | Leave a comment

La lettera della preside contro l’indifferenza che fa nascere tutti i fascismi

Ecco la lettera della preside del Liceo scientifico di Firenze “Leonardo Da Vinci”, scritta a fronte del pestaggio avvenuto davanti alla suo scuola ad opera di ragazzi contro altri ragazzi:

Cari studenti, in merito a quanto accaduto lo scorso sabato davanti al Liceo Michelangiolo di Firenze, al dibattito, alle reazioni e alle omesse reazioni, ritengo che ognuno di voi abbia già una sua opinione, riflettuta e immaginata da sé, considerato che l’episodio coinvolge vostri coetanei e si è svolto davanti a una scuola superiore, come lo è la vostra. Non vi tedio dunque, ma mi preme ricordarvi solo due cose. 

Il fascismo in Italia non è nato con le grandi adunate da migliaia di persone. È nato ai bordi di un marciapiede qualunque, con la vittima di un pestaggio per motivi politici che è stata lasciata a sé stessa da passanti indifferenti. ‘Odio gli indifferenti’ – diceva un grande italiano, Antonio Gramsci, che i fascisti chiusero in un carcere fino alla morte, impauriti come conigli dalla forza delle sue idee. 

Inoltre, siate consapevoli che è in momenti come questi che, nella storia, i totalitarismi hanno preso piede e fondato le loro fortune, rovinando quelle di intere generazioni. Nei periodi di incertezza, di sfiducia collettiva nelle istituzioni, di sguardo ripiegato dentro al proprio recinto, abbiamo tutti bisogno di avere fiducia nel futuro e di aprirci al mondo, condannando sempre la violenza e la prepotenza. Chi decanta il valore delle frontiere, chi onora il sangue degli avi in contrapposizione ai diversi, continuando ad alzare muri, va lasciato solo, chiamato con il suo nome, combattuto con le idee e con la cultura. Senza illudersi che questo disgustoso rigurgito passi da sé. Lo pensavano anche tanti italiani per bene cento anni fa ma non è andata così. 

Fonte

Continue reading

Posted in Italian Content, Lettere a mia figlia, Lettere a mio figlio | Tagged , | Leave a comment

HyperCard

Hypercard era un software per Mac nato nel lontano 1987, che consentiva di creare presentazioni interattive, a meta’ strada tra i concetti cari agli ipertesti e alle slide che sarebbero venute poi (Powerpoint e’ apparso nel 1990).

Hypercard aveva anche qualche debole capacita’ di manipolare dati su  un file piatto, che era il massimo che si poteva pretendere ai tempi sui Personal Computer a 8bit.

Fu dismesso nel 1998, in parte a causa della “purga” ideologica che Steve Jobs fece con il suo ritorno in Apple, e il team originario fu smembrato.

Credo sia stato un peccato perche’ poteva essere un competitor interessante di Powerpoint, molto piu’ forte rispetto ad altre soluzioni piu’ banali (Keynote, FileMaker).

In Italia e’ famoso perche’ fu usato da Antonio Di Pietro per spiegare l’intricata rete costruita con le tangenti dell’inchiesta Manipulite, e si dice che fu coadiuvato dall’Univesita’ di Informatica di Milano per lo sviluppo del “Deck”. In alcune riprese si vede proprio Di Pietro che mostra le “diapositive” di HyperCard.

Decker e’ forse il progetto open source piu’ promettente. anche se non e’ l’unico.

Purtroppo Decker e’ monocromatico e richiede d’imparare un nuovo linguaggio per poter automatizzare molti task, risultando quindi meno immediato di tool come Draw.io o PowerPoint.

Posted in Italian Content, Retro Computing | Leave a comment

Si fa presto a dire teorema di Pitagora: la scoperta dei numeri irrazionali

Un professore su Tik Tok (@3minuticolprof) mi ha fatto conoscere una bellissima dimostrazione ad opera del filosofo greco Ippaso, che oltre ad essere geniale nella sua semplicità spiega bene la differenza tra numeri razionali e irrazionali.

Premessa: I Pitagorici pensavano che tutti i numeri potessero essere espressi come rapporto tra due numeri.

Questo consentiva di esprimere numeri infiniti ma periodici. Oggi chiamiamo questo insieme quello dei numeri Razionali (=Ratio, rapporto).

Per es 0,33333… puo’ essere espresso come 1/3
Questi e altri infiniti quindi erano abbastanza controllabili ed esprimibili come rapporti tra due numeri finiti.

L’infinito ai greci dava un po’ noia, e stimolava discussione tra filosofi (es il paradosso di Zenone su “Achille e la tartaruga“, ma non solo);  tutto cio’ sara’ risolvibile con la corretta formalizzazione del principio di limite e attraverso l’Analisi matematica, a dimostrazione del fatto che non era cosi’ banale.

I Pitagorici si erano accorti che esprimere π in questo modo non era preciso, ma pensavano che prima o poi avrebbero trovato una frazione per acchiapparlo.

Continue reading

Posted in Italian Content, Lettere a mia figlia | Tagged , , , | Leave a comment

La mappa di memoria del C/64

Programmare il C/64 era complicato per diverse ragioni:

  1. Il Basic V2 era troppo lento per scrivere giochi effettivi
  2. La maggior parte delle feature richiedevano di scrivere direttamente su celle di memoria mappate sui chip audio e video, spesso cambiando singoli bit.
  3. La mappa di memoria del C/64 era abbastanza complessa


Mappa di memoria dal C64Wiki

Premessa: il MOS 6502 non ha istruzioni di I/O dedicate, anche se aveva linee di I/O molto complesse da gestire (vedi le locazioni $00 e $01 del C/64 che per es pilotano il nastro e l’I/O).

Commodore penso’ di  mappare i registri I/O dei chip del C/64 direttamente sulla RAM. Questo semplificava anche la scrittura del software, solo che… gli altri microcomputer (es Vic20 o C/16) non avevano cosi’ tanta memoria… e quindi non era un problema mappare questi registri nello spazio di indirizzamento da 64Kb, ne’ mappare le ROM. Per prendere anche una architettura diversa,  lo ZX Spectrum  aveva “solo” 48Kb RAM e teneva la ROM in quello che restava (16Kb)

Il C/64 veniva fornito con un quantitativo di RAM enorme, che riempiva tutto lo spazio di indirizzamento del 6502,: si trattava di una scommessa fatta (e vinta) da Commodore che confidava sulla riduzione dei costi dei chip di memoria RAM statica.

Per cui la ROM era “mappata” sullo spazio di indirizzamento del 6502, e quindi la ROM del BASIC e de Kernal poteva essere “rimpiazzata” dalla RAM sottostante (Bank Switching).

Tutto questo era gestito attraverso la locazione $01, che pilotava un chip chiamato Programmable Logic Array  (PLA, peraltro uno dei chip custom del C/64).

In particolare ecco la semantica della locazione $01:

Bit 0 - LORAM: Configures RAM or ROM at $A000-$BFFF
Bit 1 - HIRAM: Configures RAM or ROM at $E000-$FFFF
Bit 2 - CHAREN: Configures I/O or ROM at $D000-$DFFF
Bit 3 - Cassette Data Output Line (Datasette)
Bit 4 - Cassette Switch Sense; 1 = Switch Closed
Bit 5 - Cassette Motor Control; 0 = On, 1 = Off
Bit 6 - Undefined
Bit 7 - Undefined

I 4Kb in $D000-DFFF hanno un triplo bank switching: in questi 4KB trovate sia la maggior parte dei registri di I/O,  la ROM dei caratteri e ALTRI 4 Kb di VERA RAM.

Peccato che per accedere alla RAM in $D000 si deve per forza disattivare anche il Kernal in $E000-$FFFF e quindi il suo utilizzo non risulta agevolissimo (questo schema mostra tutte le configurazioni).
Rinunciare al Kernal non e’ agevole perche’ gli interrupt (mascherabili (IRQ) e non (NMI)) hanno bisogno delle routine di gestione, e queste stanno proprio nel Kernal.

La CHAR ROM e’ “posizionata” in $D000 solo ad uso e consumo del 6502: il VIC-II usa un modo completamente diverso per indirizzare la memoria perche’ puo’ indirizzare solo 16k di RAM alla volta.  Siccome 16×4 fa 64, ci sono solo 4 “banchi” in cui e’ segmentata la memoria per il VIC-II e bastano due bit per dirgli che banco “guardare”.

In due di queste quattro modalita’ la CHAR ROM e’ visibile al VICII, e non c’e’ bisogno di mapparla nello spazio di indirizzamento del C/64. La CHAR ROM e’ accessibile in $D000 nel caso serva ai programmi applicativi, per es per “copiarla” in memoria e fare solo piccole modifiche.

Un bel caos giusto?

Infine di DEFAULT, la memoria video del C/64 per la modalita’ caratteri e’ rilocata in $0400 (dec 1024) per 1000 byte (=40×25).

Le cartucce

Le cartucce (CART ROM) possono mappare fino a tre aree per un totale di 3×8=24Kb,ma devono di norma coprire l’area da $8000 perche’ al BOOT il kernal cerca li’ la signature che scatena il lancio per consentire alla cartuccia di partire. In particolare in $8004–$8008 deve esserci la stringa “CBM80” che fa si’ che il Kernal faccia un salto indiretto all’indirizzo posto in $8000-8001.

 

Ciliegina sulla torta, non trovate proprio tutti gli I/O in $D000-DFFF, perche’ alcune sono sulle locazioni $00- $01 e alcune si trovano sul registro SID (!) per es il potenziometro per alcuni dispositivi come i paddle gioco.

Posted in Italian Content, Retro Computing | Tagged , | Leave a comment