Tricky C - Indice
INFORMAZIONI SUL COPYRIGHT
PENSIERINO DI Barninga Z!
IL LINGUAGGIO C: CENNI GENERALI
LA PRODUZIONE DEI PROGRAMMI C
    Linguaggi interpretati e compilati
        L'Interprete
        Il Compilatore
        Quale dei due?
    Dall'idea all'applicazione
I PROGRAMMI C: UN PRIMO APPROCCIO
LA GESTIONE DEI DATI IN C
    I tipi di dato
    Le variabili
    I puntatori
        Gli indirizzi di memoria
        Gli operatori * e &
        Complicazioni
        Puntatori far e huge
        Puntatori static
        Le stringhe
        Gli array
        L'aritmetica dei puntatori
        Puntatori a puntatori
        Puntatori void
    L'accessibilità e la durata delle variabili
        Le variabili automatic
        Le variabili register
        Le variabili static
        Le variabili external
    Le costanti
        Le costanti manifeste
        Le costanti simboliche
    Entità complesse
        Le strutture
        Le unioni
        Gli enumeratori
        I campi di bit
GLI OPERATORI
    Not logico
    Complemento a uno
    Negazione algebrica
    Autoincremento e autodecremento
    Cast e conversioni di tipo
    Operatore sizeof()
    Operatori aritmetici
    Resto di divisione intera
    Shift su bit
    Operatori logici di test
    Operatori logici su bit
    Operatore condizionale
    Assegnamento
    Separatore di espressioni
IL FLUSSO ELABORATIVO
        Le istruzioni di controllo condizionale
        if...else
        switch
        goto
    I cicli
        while
        do...while
        for
LE FUNZIONI
    Definizione, parametri e valori restituiti
    Puntatori a funzioni
    La ricorsione
    main(): parametri e valore restituito
ALLOCAZIONE DINAMICA DELLA MEMORIA
L'I/O E LA GESTIONE DEI FILE
    Gli stream
        Stream standard
        Gli stream in C
    Il caching
    Altri strumenti di gestione dei file
LANCIARE PROGRAMMI
    La libreria C
        system()
        spawn...()
            Funzioni del gruppo "l"
            Funzioni del gruppo "v"
        exec...()
        Tabella sinottica
        Condivisione dei files
    Portabilità
GLI INTERRUPT: UTILIZZO
    ROM-BIOS e DOS, Hardware e Software
    La libreria C
I MODELLI DI MEMORIA
    Tiny model
    Small model
    Medium model
    Compact model
    Large model
    Huge model
SCRIVERE FUNZIONI DI LIBRERIA
    Accorgimenti generali
    Esigenze tecniche
    La realizzazione pratica
INTERAZIONE TRA C E ASSEMBLER
    Assembler
    Inline assembly
        Lo stack
        Utilizzo dei registri
        Variabili e indirizzi C
    Altri strumenti di programmazione mista
        Pseudoregistri
        geninterrupt()
        __emit__()
    Uno stratagemma: dati nel code segment
C E CLIPPER
    Passaggio di parametri e restituzione di valori
    Reference e puntatori
    Allocazione della memoria
    Alcuni esempi
GESTIONE A BASSO LIVELLO DELLA MEMORIA
    Il compilatore C
    Memoria convenzionale
    Upper memory
    Memoria espansa
    Memoria estesa, High Memory Area e UMB
        I servizi XMS per la memoria estesa
        I servizi XMS per la HMA
        I servizi XMS per gli UMB
GLI INTERRUPT: GESTIONE
    La tavola dei vettori
    Le funzioni interrupt
    Le funzioni far
    Utilizzo dei gestori originali
    Due o tre esempi
        Inibire CTRL-C e CTRL-BREAK
        Inibire CTRL-ALT-DEL
        Redirigere a video l'output della stampante
I PROGRAMMI TSR
    Tipi di TSR
    La struttura del TSR
    Installazione del TSR
    Dati, stack e librerie
        Ottimizzazione dell'impiego della RAM
        Allocazione dinamica della RAM
        I TSR e la memoria EMS
        Rilasciare l'environment del TSR
        Due parole sullo stack
        Utilizzo delle funzioni di libreria
    Gestione degli interrupt
        Hardware, ROM-BIOS e DOS
        I flag del DOS
        Int 05h (BIOS): Print Screen
        Int 08h (Hardware): Timer
        Int 09h (Hardware): Tastiera
        Int 10h (BIOS): Servizi video
        Int 13h (BIOS): I/O dischi
        Int 16h (BIOS): Tastiera
        Int 1Bh (BIOS): CTRL-BREAK
        Int 1Ch (BIOS): Timer
        Int 21h (DOS): servizi DOS
        Int 23h (DOS): CTRL­C
        Int 24h (DOS): Errore critico
        Int 28h (DOS): DOS libero
        Int 2Fh (DOS): Multiplex
    Gestione dello I/O
        Tastiera
        Video
        File
        DTA
    Gestione del PSP
    Ricapitolando...
    Disattivazione e disinstallazione
        keep() ed exit()
        Suggerimenti operativi
            Controllo di avvenuta installazione
            Richiesta dell'indirizzo dei dati
            Rimozione della porzione residente del TSR
            Precauzioni
        Alcuni esempi pratici
I DEVICE DRIVER
    Aspetti tecnici
        Il bootstrap
        Tipi di device driver
        Struttura e comportamento dei device driver
        Il Device Driver Header: in profondità
        Il Request Header e i servizi: tutti i particolari
            Servizio 00: Init
            Servizio 01: Media Check
            Servizio 02: Build BPB
            Servizio 03: IOCTL Read
            Servizio 04: Read (Input)
            Servizio 05: Nondestructive Read
            Servizio 06: Input Status
            Servizio 07: Flush Input Buffers
            Servizio 08: Write (Output)
            Servizio 09: Write With Verify
            Servizio 10: Output Status
            Servizio 11: Flush Output Buffers
            Servizio 12: IOCTL Write
            Servizio 13: Device Open
            Servizio 14: Device Close
            Servizio 15: Removable Media
            Servizio 16: Output Until Busy
            Servizio 19: Generic IOCTL Request
            Servizio 23: Get Logical Device
            Servizio 24: Set Logical Device
    I Device Driver e il C
        Un timido tentativo
        Progetto di un toolkit
            Il nuovo startup module
            La libreria di funzioni
            La utility per modificare gli header
            Il toolkit al lavoro
                La funzione init()
                Altre funzioni e macro
                L'accesso al device driver request header
                Le variabili globali dello startup module
                Esempio: alcune cosette che il toolkit rende possibili
                Esempio: esperimenti di output e IOCTL
LINGUAGGIO C E PORTABILITA'
    Dipendenze dallo hardware
    Dipendenze dai compilatori
    Dipendenze dal sistema operativo
DI TUTTO... DI PIU'
    Due file sono il medesimo file?
    Dove mi trovo?
    La command line
        _setargv__() e _setenvp__()
        WILDARGS.OBJ
        PSP e command line
        Una gestione Unix-like
            La sintassi
            Le funzioni per la libreria
    La gestione degli errori
    Un esempio di... disinfestante
    Un esempio di... pirateria
        Individuare la strategia di protezione
        Superare la barriera
        Sulla retta via...
    Insoddisfatti della vostra tastiera?
        Ridefinire la tastiera
        Una utility
    Vuotare il buffer della tastiera
    Catturare il contenuto del video
    Disinstallare i TSR
    Vettori di interrupt o puntatori?
    Il CMOS
    C... come Cesare
    Lavorare con i file batch
        L'idea più semplice: EMPTYLVL
        Data e ora nei comandi: DATECMD
        File piccoli a piacere: FCREATE
        Attendere il momento buono: TIMEGONE
        Estrarre una sezione da un file: SELSTR
        Estrarre colonne di testo da un file: CUT
        Il comando FOR rivisitato: DOLIST
        I comandi nidificati: CMDSUBST
    Numeri a caso
CONTENUTO DEL FLOPPY DISK