Il segmento dei "dati"

Per far girare il nostro programma di "avvio" abbiamo bisogno non solo di puro codice, ma di un segmento dove ragrupperemo tutti i dati che ci servono: dalle definizioni del testo alle definizioni dei colori, stringhe di testo da copiare, tabelle fisse o dati variabili, il tutto distribuito con massimo ordine andremo a scivere con il nostro editor esadecimale direttamente nelle locazioni del disco.

Il segmento "dati" lo andiamo a scrivere direttamente su disco a partire dal settore 00,08,00,00
Il segmento "dati" verrà caricato direttamente dall'mbr denominato "avvio" a partire dalla locazione 2:0000
I primi dati che andiamo a registrare ci sevono per la definizione del testo, quindi dobbiamo almeno definire un tipo di testo tramite una matrice di punti per ogni carattere. Ogni carattere viene definito su di una intera linea di codice per un totale di 16 bytes e per un totale di 256 caratteri, i primi 128 caratteri contengono numeri e lettere minuscole, i restanti contengono numeri e lettere maiuscole.
Come già accennato non useremo conversioni di nessun tipo quindi ogni carettere occupa la posizione restituita dal controller della tastiera, il singolo carattere avrà una dimensione di 8 punti in larghezza e 16 punti in altezza.

Partiamo con la tabella dei caratteri
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00      :0000
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ;esc
      *00 00 18 3c 3c 3c 18 18 18 00 18 18 00 00 00 00  ;!
      *00 66 66 66 24 00 00 00 00 00 00 00 00 00 00 00  ;"
      *00 38 6c 64 60 f0 60 60 60 60 e6 fc 00 00 00 00  ;£
      *18 18 7c c6 c2 c0 7c 06 06 86 c6 7c 18 18 00 00  ;$
      *00 00 00 00 c2 c6 0c 18 30 60 c6 86 00 00 00 00  ;%
      *00 00 38 6c 6c 38 76 dc cc cc cc 76 00 00 00 00  ;&
      *00 00 00 00 02 06 0c 18 30 60 c0 80 00 00 00 00  ;/
      *00 00 0c 18 30 30 30 30 30 30 18 0c 00 00 00 00  ;(
      *00 00 30 18 0c 0c 0c 0c 0c 0c 18 30 00 00 00 00  ;)
      *00 00 00 00 00 7e 00 00 7e 00 00 00 00 00 00 00  ;=
      *00 00 7c c6 c6 0c 18 18 18 00 18 18 00 00 00 00  ;?
      *10 38 6c 6c 00 00 00 00 00 00 00 00 00 00 00 00  ;^
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ;cancella
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ;tab
      *00 00 00 00 00 76 cc cc cc cc cc 7c 0c 0c 1e 00  ;q
      *00 00 00 00 00 c6 c6 d6 d6 d6 fe 6c 00 00 00 00  ;w
      *00 00 00 00 00 7c c6 fe c0 c0 c6 7c 00 00 00 00  ;e
      *00 00 00 00 00 dc 76 66 60 60 60 f0 00 00 00 00  ;r
      *00 00 10 30 30 fc 30 30 30 30 36 1c 00 00 00 00  ;t
      *00 00 00 00 00 c6 c6 c6 c6 c6 c6 7e 06 0c f8 00  ;y
      *00 00 00 00 00 cc cc cc cc cc cc 76 00 00 00 00  ;u
      *00 00 18 18 00 38 18 18 18 18 18 3c 00 00 00 00  ;i
      *00 00 00 00 00 7c c6 c6 c6 c6 c6 7c 00 00 00 00  ;o
      *00 00 00 00 00 dc 66 66 66 66 66 7c 60 60 f0 00  ;p
      *00 0c 18 30 00 7c c6 fe c0 c0 c6 7c 00 00 00 00  ;é
      *00 60 30 18 00 7c c6 fe c0 c0 c6 7c 00 00 00 00  ;è
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ;invio
      *00 00 00 06 0c 18 30 60 30 18 0c 06 00 00 00 00  ;<
      *00 00 00 00 00 78 0c 7c cc cc cc 76 00 00 00 00  ;a
      *00 00 00 00 00 7c c6 60 38 0c c6 7c 00 00 00 00  ;s

      *00 00 16 0c 0c 3c 6c cc cc cc cc 76 00 00 00 00  ;d  :0200
      *00 00 38 6c 64 60 f0 60 60 60 60 f0 00 00 00 00  ;f
      *00 00 00 00 00 76 cc cc cc cc cc 7c 0c cc 78 00  ;g
      *00 00 e0 60 60 6c 76 66 66 66 66 e6 00 00 00 00  ;h
      *00 00 06 06 00 0e 06 06 06 06 06 06 66 3c 00 00  ;j
      *00 00 e0 60 60 66 6c 78 78 6c 66 e6 00 00 00 00  ;k
      *00 00 38 18 18 18 18 18 18 18 18 3c 00 00 00 00  ;l
      *00 60 30 18 00 7c c6 c6 c6 c6 c6 7c 00 00 00 00  ;ò
      *00 60 30 18 00 78 0c 7c cc cc cc 76 00 00 00 00  ;à
      *00 00 18 18 18 18 00 18 17 18 18 18 00 00 00 00  ;¦
      *00 00 3c 30 30 30 30 30 30 30 30 3c 00 00 00 00  ;[
      *00 60 30 18 00 cc cc cc cc cc cc 76 00 00 00 00  ;ù
      *00 00 00 00 00 fe cc 18 30 60 c6 fe 00 00 00 00  ;z
      *00 00 00 00 00 c6 6c 38 38 38 6c 6c 00 00 00 00  ;x
      *00 00 00 00 00 7c c6 c0 c0 c0 c6 7c 00 00 00 00  ;c
      *00 00 00 00 00 66 66 66 66 66 3c 18 00 00 00 00  ;v
      *00 00 e0 60 60 78 6c 66 66 66 66 7c 00 00 00 00  ;b
      *00 00 00 00 00 dc 66 66 66 66 66 66 00 00 00 00  ;n
      *00 00 00 00 00 ec fe d6 d6 d6 d6 c6 00 00 00 00  ;m
      *00 00 00 00 18 18 00 00 00 18 18 30 00 00 00 00  ;;
      *00 00 00 00 18 18 00 00 00 18 18 00 00 00 00 00  ;:
      *00 00 00 00 00 00 00 00 00 18 18 18 30 00 00 00  ;,
      *00 00 3c 0c 0c 0c 0c 0c 0c 0c 0c 3c 00 00 00 00  ;]
      *00 00 00 00 00 66 3c ff 3c 66 00 00 00 00 00 00  ;*
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ;spazio
      *00 00 00 00 76 dc 00 00 00 00 00 00 00 00 00 00  ;caps lock
      *00 00 38 6c 6c 38 76 dc cc cc cc 76 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00      :0400
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 18 18 18 30 00 00 00  ;,
      *00 30 30 30 60 00 00 00 00 00 00 00 00 00 00 00  ;'
      *00 00 fe c6 06 06 0c 18 30 30 30 30 00 00 00 00  ;7
      *00 00 7c c6 c6 c6 7c c6 c6 c6 c6 7c 00 00 00 00  ;8
      *00 00 7c c6 c6 c6 7e 06 06 06 0c 78 00 00 00 00  ;9
      *00 00 00 00 00 00 00 fe 00 00 00 00 00 00 00 00  ;-
      *00 00 0c 1c 3c 6c cc fe 0c 0c 0c 1e 00 00 00 00  ;4
      *00 00 fe c0 c0 c0 fc 06 06 06 06 7c 00 00 00 00  ;5
      *00 00 38 60 c0 c0 fc c6 c6 c6 c6 7c 00 00 00 00  ;6
      *00 00 00 00 00 18 18 7e 18 18 00 00 00 00 00 00  ;+
      *00 00 18 38 78 18 18 18 18 18 18 7e 00 00 00 00  ;1
      *00 00 7c c6 06 0c 18 30 60 c0 c6 fe 00 00 00 00  ;2
      *00 00 7c c6 06 06 3c 06 06 06 c6 7c 00 00 00 00  ;3
      *00 00 38 6c c6 c6 d6 d6 c6 c6 6c 38 00 00 00 00  ;0
      *00 00 00 00 00 00 00 00 00 00 18 18 00 00 00 00  ;.
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 60 30 18 0c 06 0c 18 30 60 00 00 00 00  ;>
      *18 18 7c c6 c2 c0 7c 06 06 86 c6 7c 18 18 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00      :0600
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 10 38 7c 18 18 18 3c 00 00 00 00
      *00 00 00 00 10 38 6c d6 4a 6c c6 82 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 20 62 fe 7e 22 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 08 8c fe fc 88 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 6c fe fe fe fe 7c 38 10 00 00 00 00
      *00 00 00 00 00 3c 18 18 18 7c 38 10 00 00 00 00
      *00 00 00 00 82 c6 6c ba d6 6c 38 10 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00      :0800
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ;esc
      *00 00 0e 18 18 18 70 18 18 18 18 0e 00 00 00 00  ;{
      *00 00 70 18 18 18 0e 18 18 18 18 70 00 00 00 00  ;}
      *00 00 00 00 00 36 6c d8 6c 36 00 00 00 00 00 00  ;«
      *00 00 00 00 00 d8 6c 36 6c d8 00 00 00 00 00 00  ;»
      *00 00 00 00 18 18 00 7e 00 18 18 00 00 00 00 00  ;÷
      *00 00 ff 00 00 00 00 00 00 00 00 00 00 00 00 00  ;¯
      *00 00 18 18 18 18 18 18 18 18 18 18 00 00 00 00  ;|
      *00 00 76 dc 00 00 00 00 00 00 00 00 00 00 00 00  ;~
      *00 00 00 00 18 18 7e 18 18 00 00 ff 00 00 00 00  ;±
      *00 38 6c 6c 38 00 00 00 00 00 00 00 00 00 00 00  ;=
      *00 30 30 30 60 00 00 00 00 00 00 00 00 00 00 00  ;'
      *00 60 30 18 00 38 18 18 18 18 18 3c 00 00 00 00  ;ì
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ;cancella
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ;tab
      *00 00 7c c6 c6 c6 c6 c6 c6 d6 7c 0c 0e 00 00 00  ;Q
      *00 00 c6 c6 c6 c6 d6 d6 d6 fe ee 6c 00 00 00 00  ;W
      *00 00 fe 66 62 68 78 68 60 62 66 fe 00 00 00 00  ;E
      *00 00 fc 66 66 66 7c 6c 66 66 66 e6 00 00 00 00  ;R
      *00 00 7e 7e 5a 18 18 18 18 18 18 3c 00 00 00 00  ;T
      *00 00 66 66 66 66 3c 18 18 18 18 3c 00 00 00 00  ;Y
      *00 00 c6 c6 c6 c6 c6 c6 c6 c6 c6 7c 00 00 00 00  ;U
      *00 00 3c 18 18 18 18 18 18 18 18 3c 00 00 00 00  ;I
      *00 00 7c c6 c6 c6 c6 c6 c6 c6 c6 7c 00 00 00 00  ;O
      *00 00 fc 66 66 66 7c 60 60 60 60 f0 00 00 00 00  ;P
      *00 00 3c 30 30 30 30 30 30 30 30 3c 00 00 00 00  ;[
      *00 00 3c 0c 0c 0c 0c 0c 0c 0c 0c 3c 00 00 00 00  ;]
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ;invio
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 10 38 6c c6 c6 fe c6 c6 c6 c6 00 00 00 00  ;A
      *00 00 7c c6 c6 60 38 0c 06 c6 c6 7c 00 00 00 00  ;S

      *00 00 f8 6c 66 66 66 66 66 66 6c f8 00 00 00 00  ;D  :0a00
      *00 00 fe 66 62 68 78 68 60 60 60 f0 00 00 00 00  ;F
      *00 00 3c 66 c2 c0 c0 de c6 c6 66 3a 00 00 00 00  ;G
      *00 00 c6 c6 c6 c6 fe c6 c6 c6 c6 c6 00 00 00 00  ;H
      *00 00 1e 0c 0c 0c 0c 0c cc cc cc 78 00 00 00 00  ;J
      *00 00 e6 66 66 6c 78 78 6c 66 66 e6 00 00 00 00  ;K
      *00 00 f0 60 60 60 60 60 60 62 66 fe 00 00 00 00  ;L
      *00 00 00 7c c6 c6 de de de dc c0 7c 00 00 00 00  ;@
      *00 00 00 6c 6c fe 6c 6c 6c fe 6c 6c 00 00 00 00  ;#
      *00 00 00 80 c0 e0 7d 38 1c 0e 06 02 00 00 00 00  ;\
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ;;
      *00 7c c6 60 38 6c c6 c6 6c 38 0c c6 7c 00 00 00  ;§
      *00 00 fe c6 86 0c 18 30 60 c2 c6 fe 00 00 00 00  ;Z
      *00 00 c6 c6 6c 7c 38 38 7c 6c c6 c6 00 00 00 00  ;X
      *00 00 3c 66 c2 c0 c0 c0 c0 c2 66 3c 00 00 00 00  ;C
      *00 00 c6 c6 c6 c6 c6 c6 c6 6c 38 10 00 00 00 00  ;V
      *00 00 fc 66 66 66 7c 66 66 66 66 fc 00 00 00 00  ;B
      *00 00 c6 e6 f6 fe de ce c6 c6 c6 c6 00 00 00 00  ;N
      *00 00 c6 ee fe fe d6 c6 c6 c6 c6 c6 00 00 00 00  ;M
      *00 00 00 00 00 00 00 00 00 18 18 18 30 00 00 00  ;,
      *00 00 00 00 00 00 00 00 00 00 18 18 00 00 00 00  ;.
      *00 00 00 00 00 00 00 fe 00 00 00 00 00 00 00 00  ;_
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 66 3c ff 3c 66 00 00 00 00 00 00  ;*
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ;spazio
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ;caps lock
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00      :0c00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 18 18 18 30 00 00 00  ;,
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 fe c6 06 06 0c 18 30 30 30 30 00 00 00 00  ;7
      *00 00 7c c6 c6 c6 7c c6 c6 c6 c6 7c 00 00 00 00  ;8
      *00 00 7c c6 c6 c6 7e 06 06 06 0c 78 00 00 00 00  ;9
      *00 00 00 00 00 00 00 fe 00 00 00 00 00 00 00 00  ;-
      *00 00 0c 1c 3c 6c cc fe 0c 0c 0c 1e 00 00 00 00  ;4
      *00 00 fe c0 c0 c0 fc 06 06 06 c6 7c 00 00 00 00  ;5
      *00 00 38 60 c0 c0 fc c6 c6 c6 c6 7c 00 00 00 00  ;6
      *00 00 00 00 00 18 18 7e 18 18 00 00 00 00 00 00  ;+
      *00 00 18 38 78 18 18 18 18 18 18 7e 00 00 00 00  ;1
      *00 00 7c c6 06 0c 18 30 60 c0 c6 fe 00 00 00 00  ;2
      *00 00 7c c6 06 06 3c 06 06 06 c6 7c 00 00 00 00  ;3
      *00 00 38 6c c6 c6 d6 d6 c6 c6 6c 38 00 00 00 00  ;0
      *00 00 00 00 00 00 00 00 00 00 18 18 00 00 00 00  ;.
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 06 0c 18 30 60 30 18 0c 06 00 00 00 00  ;>
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00      :0e00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 66 3c ff 3c 66 00 00 00 00 00 00
      *00 00 00 00 00 7c c6 c0 c0 c0 c6 7c 00 00 00 00
      *00 00 7e 81 a5 81 81 bd 99 81 81 7e 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 10 30 30 fc 30 30 30 30 36 1c 00 00 00 00
      *00 00 00 00 00 dc 76 66 60 60 60 f0 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 18 18 00 38 18 18 18 18 18 3c 00 00 00 00
      *00 00 00 00 fe 00 00 fe 00 00 fe 00 00 00 00 00
      *00 00 00 00 00 dc 66 66 66 66 66 7c 60 60 f0 00
      *00 00 38 18 18 18 18 18 18 18 18 3c 00 00 00 00
      *00 00 0c 18 30 30 30 30 30 30 18 0c 00 00 00 00
      *00 00 30 18 0c 0c 0c 0c 0c 0c 18 30 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      
A questo punto abbiamo definito la tavola delle matrici di un "tipo testo", naturalmente le matrici si possono spostare e modificare a piacimento l'inportante è che ogni carattere occupi una intera linea e sia abbinabile ad un tasto della tastiera.
La seconda tavola che andiamo a scrivere ci servirà per la definizione dei colori, la prima cosa da considerare è che i colori mutano aspetto da video a video a seconda del tipo di scheda video che si fa uso, la seconda cosa che si nota osservando un'immagine colorata su video è l'enorme differenza di qualità con la stessa immagine prodotta da una macchina fotografica. Quindi i problemi di un video gestito da calcolatore sono tanti, ad esempio calcolare i punti da posizionare sul video è dispendioso di molte operazioni, un disegno formato di punti effettivamente fa proprio schifo, la gente vi si è abituata però il risultato finale è pessimo, poi i colori: con 3-4 bytes per colore è impossibile creare una scala di sfumature efficienti, va finire che il colore un po più chiaro o un po più scuro rimane privo di sfumature e soprattutto rimane distante milioni di volte dai veri colori naturali.
Comunque la grande e costosa scienza quello ci ha creato e quello continua a produrre quindi non possiamo fare altro che adattarci...
Ogni calcolatore incorpora una sua scheda video che noi andremo a programmare, naturalmente tutte sono diverse e quindi rimane più difficile trovare la giusta programmazione per ogni tipo di scheda video, su internet si può reperire poca documentazione in merito, qualcosa in più si può capire osservando bene le funzioni del bios legate alla scheda video, ossia le "int 10", che ci possono aiutare parecchio nella programmazione a basso livello.
Naturalmente vi darò le direttive per una sola scheda video spiegandovi come funziona e come si programma, quindi non rimane che andare a scriverci la tavola dei colori indispensabile per le definizioni dei colori. La sceda video presa a campione utilizza un buffer per 256 colori, dove ogni colore si definisce con tre bytes il rosso, il verde e il blu.
Quindi andiamo a scrivere la tavola dei colori formata da tre byes per colore per un totale di 256 colori a partire dalla locazione :1000

La tavola dei colori
      *00 00 00  00 00 0a  00 00 15  00 00 1f  00 00 2a  :1000
      *00 34 34  00 00 3f  00 0a 00  00 0a 0a  00 0a 15
      *00 0a 1f  00 0a 2a  00 0a 34  00 0a 3f  00 15 00
      *00 15 0a  00 15 15  00 15 1f  00 15 2a  00 15 34
      *00 15 3f  00 1f 00  00 1f 0a  00 1f 15  00 1f 1f
      *00 1f 2a  00 1f 34  00 1f 3f  00 2a 00  00 2a 0a
      *00 2a 15  00 2a 1f  00 2a 2a  00 2a 34  00 2a 3f
      *00 34 00  00 34 0a  00 34 15  00 34 1f  00 34 2a
      *00 34 34  00 34 3f  00 3f 00  00 3f 0a  00 3f 15
      *00 3f 1f  00 3f 2a  00 3f 34  00 3f 3f  0a 00 00
      *0a 00 0a  0a 00 15  0a 00 1f  0a 00 2a  0a 00 34
      *0a 00 3f  0a 0a 00  0a 0a 0a  0a 0a 15  0a 0a 1f
      *0a 0a 2a  0a 0a 34  0a 0a 3f  0a 15 00  0a 15 0a
      *0a 15 15  0a 15 1f  0a 15 2a  0a 15 34  0a 15 3f
      *0a 1f 00  0a 1f 0a  0a 1f 15  0a 1f 1f  0a 1f 2a
      *0a 1f 34  0a 1f 3f  0a 2a 00  0a 2a 0a  0a 2a 15
      *0a 2a 1f  0a 2a 2a  0a 2a 34  0a 2a 3f  0a 34 00  :10f0
      *0a 34 0a  0a 34 15  0a 34 1f  0a 34 2a  0a 34 34
      *0a 34 3f  0a 3f 00  0a 3f 0a  0a 3f 15  0a 3f 1f
      *0a 3f 2a  0a 3f 34  0a 3f 3f  15 00 00  15 00 0a
      *15 00 15  15 00 1f  15 00 2a  15 00 34  15 00 3f
      *15 0a 00  15 0a 0a  15 0a 15  15 0a 1f  15 0a 2a
      *15 0a 34  15 0a 3f  15 15 00  15 15 0a  15 15 15
      *15 15 1f  15 15 2a  15 15 34  15 15 3f  15 1f 00
      *15 1f 0a  15 1f 15  15 1f 1f  15 1f 2a  15 1f 34
      *15 1f 3f  15 2a 00  15 2a 0a  15 2a 15  15 2a 1f
      *15 2a 2a  15 2a 34  15 2a 3f  15 34 00  15 34 0a
      *15 34 15  15 34 1f  15 34 2a  15 34 34  15 34 3f
      *15 3f 00  15 3f 0a  15 3f 15  15 3f 1f  15 3f 2a
      *15 3f 34  15 3f 3f  1f 00 00  1f 00 0a  1f 00 15
      *1f 00 1f  1f 00 2a  1f 00 34  1f 00 3f  1f 0a 00
      *1f 0a 0a  1f 0a 15  1f 0a 1f  1f 0a 2a  1f 0a 34
      *1f 0a 3f  1f 15 00  1f 15 0a  1f 15 15  1f 15 1f  :11e0
      *1f 15 2a  1f 15 34  1f 15 3f  1f 1f 00  1f 1f 0a
      *1f 1f 15  1f 1f 1f  1f 1f 2a  1f 1f 34  1f 1f 3f
      *1f 2a 00  1f 2a 0a  1f 2a 15  1f 2a 1f  1f 2a 2a
      *1f 2a 34  1f 2a 3f  1f 34 00  1f 34 0a  1f 34 15
      *1f 34 1f  1f 34 2a  1f 34 34  1f 34 3f  1f 3f 00
      *1f 3f 0a  1f 3f 15  1f 3f 1f  1f 3f 2a  1f 3f 34
      *1f 3f 3f  2a 00 00  2a 00 0a  2a 00 15  2a 00 1f
      *2a 00 2a  2a 00 34  2a 00 3f  2a 0a 00  2a 0a 0a
      *2a 0a 15  2a 0a 1f  2a 0a 2a  2a 0a 34  2a 0a 3f
      *2a 15 00  2a 15 0a  2a 15 15  2a 15 1f  2a 15 2a
      *2a 15 34  2a 15 3f  2a 1f 00  2a 1f 0a  2a 1f 15
      *2a 1f 1f  2a 1f 2a  2a 1f 34  2a 1f 3f  2a 2a 00
      *2a 2a 0a  2a 2a 15  2a 2a 1f  2a 2a 2a  2a 2a 34
      *2a 2a 3f  2a 34 00  2a 34 0a  2a 34 15  2a 34 1f
      *2a 34 2a  2a 34 34  2a 34 3f  2a 3f 00  2a 3f 0a
      *2a 3f 15  2a 3f 1f  2a 3f 2a  2a 3f 34  2a 3f 3f  :12d0
      *34 00 00  34 00 0a  34 00 15  34 00 1f  34 00 2a
      *34 00 34  34 00 3f  34 0a 00  34 0a 0a  34 0a 15
      *34 34 34
      
Il nostro primo programma utilizza come "riga di comando" una striscia di video localizzata nella parte bassa, dalla quale possiamo digitare i nostri comandi ed inviarli in esecuzione. A tale scopo dobbiamo definire un piccolo buffer per il deposito dei relativi dati a partire dlla locaziobe :13c0
Poi avremo bisogno, per la verifica del nostro codice, di poterci stampare i valori correnti dei registri e quindi dobbiamo disporre di un relativo buffer con la dicitura dei vari registri, a partire dalla locazione :1410
A partire dalla locazione :14e0 andiamo a dicitare delle stringhe di testo che serviranno al nostro programma

I nostri buffer
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  :13c0  ;buffer della "riga di comando"
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  
      *00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  

      *52 4f 50 51 4b 4c 4d 47 48 49 1e 30 2e 20 12 21  :1400  ;codici di conversione da esadecimale a carattere

      *92 a1 a6 9e a2 39 0b 39 00 00 00 00 00 00 00 00  :1410  ;beffer per la stampa dei "registri"
      *39 39 92 9e ad 39 0b 39 00 00 00 00 00 00 00 00
      *39 39 92 b0 ad 39 0b 39 00 00 00 00 00 00 00 00
      *39 39 92 ae ad 39 0b 39 00 00 00 00 00 00 00 00
      *39 39 92 a0 ad 39 0b 39 00 00 00 00 00 00 00 00
      *39 39 92 b0 99 39 0b 39 00 00 00 00 00 00 00 00
      *39 39 92 9f 97 39 0b 39 00 00 00 00 00 00 00 00
      *39 39 92 a0 97 39 0b 39 00 00 00 00 00 00 00 00
      *39 39 92 9f 99 39 0b 39 00 00 00 00 00 00 00 00
      *a0 9f 39 0b 39 00 00 00 00
      *92 9f 39 0b 39 00 00 00 00
      *9f 9f 39 0b 39 00 00 00 00
      *a1 9f 39 0b 39 00 00 00 00
      *a2 9f 39 0b 39 00 00 00 00
      *ae 9f 39 0b 39 00 00 00 00
      *97 99 39 0b 39 00 00 00 00

      *99 1e 22 17 31 1e 34              :14e0   ;Pagina:
      *ad 34 39 39 39 39 39 39 39 95 34  :14e7   ;X:      Y:
      *9e 14 14 12 1f 1e 53 53 53        :14f2   ;Attesa...
      *a1 97 b1 92 00                    :14fb   ;FINE
      *ae 98 b2 99 97 a6 9e 00           :1500   ;COMPILA
      
La prossima tabella ci ritorna utile per la conversione dei caratteri in numeri esadecimali
      *ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  :1600
      *ff ff 0e ff ff ff ff ff ff ff ff ff ff ff 0a ff
      *0d 0f ff ff ff ff ff ff ff ff ff ff ff ff 0c ff
      *0b ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      *ff ff ff ff ff ff ff 07 08 09 ff 04 05 06 ff 01
      *02 03 00 ff ff ff ff ff ff ff ff ff ff ff ff ff
      *ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      *ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      *ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      *ff ff 0e ff ff ff ff ff ff ff ff ff ff ff 0a ff
      *0d 0f ff ff ff ff ff ff ff ff ff ff ff ff 0c ff
      *0b ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      *ff ff ff ff ff ff ff 07 08 09 ff 04 05 06 ff 01
      *02 03 00 ff ff ff ff ff ff ff ff ff ff ff ff ff
      *ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      *ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      
Introduzione alla programmazione in "Assembler"
invia E-mail