- Page 1 and 2: Tricky C
- Page 3 and 4: Copyright © 1994-1998 Barninga Z!.
- Page 5 and 6: I N D I C E Indice - I INDICE......
- Page 7 and 8: Indice - III Esigenze tecniche ....
- Page 9 and 10: Indice - V Servizio 24: Set Logical
- Page 11 and 12: Il linguaggio C: cenni generali - 1
- Page 13 and 14: La produzione dei programmi C - 3 L
- Page 15 and 16: La produzione dei programmi C - 5 A
- Page 17 and 18: 8 - Tricky C printf( "Ciao Ciao!\n"
- Page 19 and 20: L A G E S T I O N E D E I D A T I I
- Page 21 and 22: La gestione dei dati in C - 13 posi
- Page 23 and 24: La gestione dei dati in C - 15 comp
- Page 25 and 26: La gestione dei dati in C - 17 indi
- Page 27 and 28: float numero = 12.5; float *numPtr
- Page 29 and 30: La gestione dei dati in C - 21 Sign
- Page 31 and 32: La gestione dei dati in C - 23 aven
- Page 33 and 34: La gestione dei dati in C - 25 Come
- Page 35 and 36: La gestione dei dati in C - 27 aume
- Page 37 and 38: La gestione dei dati in C - 29 La d
- Page 39: int i, j, iTab[3][6]; for(i = 0; i
- Page 43 and 44: 2, 10 1, 10 La gestione dei dati in
- Page 45 and 46: La gestione dei dati in C - 37 cess
- Page 47 and 48: La gestione dei dati in C - 39 Se i
- Page 49 and 50: } printf("%d\n",x,y); int y = 321;
- Page 51 and 52: La gestione dei dati in C - 43 Dagl
- Page 53 and 54: La gestione dei dati in C - 45 Come
- Page 55 and 56: La gestione dei dati in C - 47 valo
- Page 57 and 58: La gestione dei dati in C - 49 vede
- Page 59 and 60: } La gestione dei dati in C - 51 pr
- Page 61 and 62: c[1]. cPtr-> All'iterazione success
- Page 63 and 64: La gestione dei dati in C - 55 prin
- Page 65 and 66: G l i e n u m e r a t o r i La gest
- Page 67 and 68: La gestione dei dati in C - 59 I ca
- Page 69 and 70: 62 - Tricky C OPERATORI C OPERATORE
- Page 71 and 72: 64 - Tricky C a = b; if(!(a != 0))
- Page 73 and 74: 66 - Tricky C dell'operazione deve
- Page 75 and 76: 68 - Tricky C O P E R A T O R E s i
- Page 77 and 78: 70 - Tricky C O P E R A T O R I L O
- Page 79 and 80: 72 - Tricky C ed il risultato è 46
- Page 81 and 82: 74 - Tricky C += -= *= /= %= >>=
- Page 83 and 84: 76 - Tricky C Quando è presente la
- Page 85 and 86: 78 - Tricky C valutata assuma propr
- Page 87 and 88: 80 - Tricky C Le due righe comprese
- Page 89 and 90: 82 - Tricky C priori il numero esat
- Page 91 and 92:
L E F U N Z I O N I Le funzioni - 8
- Page 93 and 94:
Le funzioni - 87 printf() restituis
- Page 95 and 96:
Le funzioni - 89 una chiamata ad un
- Page 97 and 98:
Le funzioni - 91 variabile globale
- Page 99 and 100:
Le funzioni - 93 Nell'esempio funcP
- Page 101 and 102:
Le funzioni - 95 Circa il trattamen
- Page 103 and 104:
FUNZIONI DA CHIAMARE Carattere inco
- Page 105 and 106:
Le funzioni - 99 ptr è un byte nul
- Page 107 and 108:
Le funzioni - 101 Inoltre, per defi
- Page 109 and 110:
if((ff.ff_attrib & FA_DIREC) && (*f
- Page 111 and 112:
Le funzioni - 105 medesimo segmento
- Page 113 and 114:
Le funzioni - 107 Anche i numeri 33
- Page 115 and 116:
Allocazione dinamica della memoria
- Page 117 and 118:
Allocazione dinamica della memoria
- Page 119 and 120:
Allocazione dinamica della memoria
- Page 121 and 122:
116 - Tricky C STREAM STANDARD NOME
- Page 123 and 124:
118 - Tricky C int var; .... if(!(o
- Page 125 and 126:
120 - Tricky C Al termine delle ope
- Page 127 and 128:
122 - Tricky C Vale ancora la pena
- Page 129 and 130:
124 - Tricky C senza operazioni di
- Page 131 and 132:
126 - Tricky C A L T R I S T R U M
- Page 133 and 134:
128 - Tricky C int _open(char *path
- Page 135 and 136:
130 - Tricky C restituisce -1 in ca
- Page 137 and 138:
132 - Tricky C Il processo child er
- Page 139 and 140:
134 - Tricky C spawnlpe() int: P_WA
- Page 141 and 142:
136 - Tricky C l’effetto congiunt
- Page 143 and 144:
G L I I N T E R R U P T : U T I L I
- Page 145 and 146:
if(outRegs.x.cflag) printf("Errore
- Page 147 and 148:
I M O D E L L I D I M E M O R I A I
- Page 149 and 150:
S M A L L M O D E L I modelli di me
- Page 151 and 152:
Fig. 4: Segmentazione della memoria
- Page 153 and 154:
.... char far *parmPtr, far *retPtr
- Page 155 and 156:
S C R I V E R E F U N Z I O N I D I
- Page 157 and 158:
Scrivere funzioni di libreria - 153
- Page 159 and 160:
Scrivere funzioni di libreria - 155
- Page 161 and 162:
158 - Tricky C mov ah,2 mov dl,[bp+
- Page 163 and 164:
160 - Tricky C Calma, calma: non è
- Page 165 and 166:
162 - Tricky C ogni funzione può r
- Page 167 and 168:
164 - Tricky C } REPEAT: asm { lods
- Page 169 and 170:
166 - Tricky C V a r i a b i l i e
- Page 171 and 172:
168 - Tricky C asm mov di,d_pointer
- Page 173 and 174:
170 - Tricky C Quando vengono asseg
- Page 175 and 176:
172 - Tricky C utilizza DS come pun
- Page 177 and 178:
174 - Tricky C #define new_handler
- Page 179 and 180:
176 - Tricky C void main(void) { in
- Page 181 and 182:
178 - Tricky C Il prototipo di una
- Page 183 and 184:
180 - Tricky C La _pards() restitui
- Page 185 and 186:
182 - Tricky C _stords() memorizza
- Page 187 and 188:
184 - Tricky C } if(_parinfo(0) !=
- Page 189 and 190:
186 - Tricky C dell'eseguibile: il
- Page 191 and 192:
Gestione a basso livello della memo
- Page 193 and 194:
Gestione a basso livello della memo
- Page 195 and 196:
Gestione a basso livello della memo
- Page 197 and 198:
} struct SREGS sregs; regs.h.ah = 0
- Page 199 and 200:
Gestione a basso livello della memo
- Page 201 and 202:
U P P E R M E M O R Y Gestione a ba
- Page 203 and 204:
} Gestione a basso livello della me
- Page 205 and 206:
Gestione a basso livello della memo
- Page 207 and 208:
Gestione a basso livello della memo
- Page 209 and 210:
******************** BARNINGA_Z! -
- Page 211 and 212:
} return(-((r.r_ax >> 8) & 0xFF));
- Page 213 and 214:
.r_es = _DS; r.r_di = (unsigned)emm
- Page 215 and 216:
#include int cdecl setEMMhandleNam
- Page 217 and 218:
INT 67H, SERV. 44H: EFFETTUA IL MAP
- Page 219 and 220:
Gestione a basso livello della memo
- Page 221 and 222:
Gestione a basso livello della memo
- Page 223 and 224:
} return(_BL); Gestione a basso liv
- Page 225 and 226:
FORMATO DEL BUFFER UTILIZZATO DALL'
- Page 227 and 228:
Gestione a basso livello della memo
- Page 229 and 230:
8Fh Subfunzione non supportata 92h
- Page 231 and 232:
} asm int 2Fh; return((void _es *)_
- Page 233 and 234:
Gestione a basso livello della memo
- Page 235 and 236:
{ } Gestione a basso livello della
- Page 237 and 238:
asm jne EXITFUNC; asm xor bh,bh; as
- Page 239 and 240:
Gestione a basso livello della memo
- Page 241 and 242:
SERVIZIO XMS 0FH: MODIFICA LA DIMEN
- Page 243 and 244:
SERVIZIO XMS 01H: ALLOCA LA HMA (SE
- Page 245 and 246:
Gestione a basso livello della memo
- Page 247 and 248:
Gestione a basso livello della memo
- Page 249 and 250:
Gestione a basso livello della memo
- Page 251 and 252:
********************/ #pragma inlin
- Page 253 and 254:
G L I I N T E R R U P T : G E S T I
- Page 255 and 256:
void(interrupt *inttable[256])(); f
- Page 257 and 258:
Gli interrupt: gestione - 255 parol
- Page 259 and 260:
Fig. 11: Lo stack dopo l'ingresso n
- Page 261 and 262:
Gli interrupt: gestione - 259 pop d
- Page 263 and 264:
Gli interrupt: gestione - 261 void
- Page 265 and 266:
{ asm { cmp ah,0; jne ENDFUNC; cmp
- Page 267 and 268:
Gli interrupt: gestione - 265 Forse
- Page 269 and 270:
} .... Gli interrupt: gestione - 26
- Page 271 and 272:
Gli interrupt: gestione - 269 void
- Page 273 and 274:
I n i b i r e C T R L - A L T - D E
- Page 275 and 276:
Gli interrupt: gestione - 273 progr
- Page 277 and 278:
I P R O G R A M M I T S R I program
- Page 279 and 280:
INT 21H, SERV. 4DH: CODICE DI USCIT
- Page 281 and 282:
unsigned cdecl resmemparas(char *pr
- Page 283 and 284:
} .... } .... void Jolly(void) { as
- Page 285 and 286:
{ .... } .... I programmi TSR - 283
- Page 287 and 288:
R i l a s c i a r e l ' e n v i r o
- Page 289 and 290:
I programmi TSR - 287 assembly il c
- Page 291 and 292:
I programmi TSR - 289 una ricorsion
- Page 293 and 294:
imul word ptr [bp-4] mov word ptr [
- Page 295 and 296:
sub sp,12 mov dword ptr [bp-4],larg
- Page 297 and 298:
I f l a g d e l D O S I programmi T
- Page 299 and 300:
COMPILABILE CON TURBO C++ 1.0 tcc -
- Page 301 and 302:
I programmi TSR - 299 1) Versione e
- Page 303 and 304:
******************** BARNINGA_Z! -
- Page 305 and 306:
KEYBOARD STATUS BYTE BIT A 1 SIGNIF
- Page 307 and 308:
I programmi TSR - 305 un gestore de
- Page 309 and 310:
PUNTATORI AL BUFFER DI TASTIERA I p
- Page 311 and 312:
I n t 2 3 h ( D O S ) : C T R L - C
- Page 313 and 314:
I n t 2 8 h ( D O S ) : D O S l i b
- Page 315 and 316:
I programmi TSR - 313 nuovamente la
- Page 317 and 318:
INT 10H, SERV. 02H: SPOSTA IL CURSO
- Page 319 and 320:
INT 10H, SERV. 13H: SCRIVE UNA STRI
- Page 321 and 322:
I programmi TSR - 319 pericolosi, c
- Page 323 and 324:
INT 21H, SERV. 3FH: LEGGE DA UN FIL
- Page 325 and 326:
INT 21H, SERV. 2FH: OTTIENE DAL DOS
- Page 327 and 328:
I programmi TSR - 325 Conoscere l'i
- Page 329 and 330:
I programmi TSR - 327 Al termine de
- Page 331 and 332:
Richiesta dell'indirizzo dei dati I
- Page 333 and 334:
COMPILABILE CON TURBO C++ 1.0 tcc -
- Page 335 and 336:
I programmi TSR - 333 il DOS la mem
- Page 337 and 338:
} I programmi TSR - 335 asm jmp dwo
- Page 339 and 340:
I programmi TSR - 337 I numerosi co
- Page 341 and 342:
I programmi TSR - 339 xor ax,ax; /*
- Page 343 and 344:
I programmi TSR - 341 mov dx,word p
- Page 345 and 346:
void install(char *banner); void un
- Page 347 and 348:
} I programmi TSR - 345 asm or al,0
- Page 349 and 350:
I programmi TSR - 347 asm mov es,ax
- Page 351 and 352:
if((offset/(DEFAULTCOLS*2)) != (i/(
- Page 353 and 354:
successiva moltiplicazione applicat
- Page 355 and 356:
I D E V I C E D R I V E R I device
- Page 357 and 358:
INT 21H, SERV. 44H, SUBF. 01H: MODI
- Page 359 and 360:
I device driver - 357 - il DOS invo
- Page 361 and 362:
STRUTTURA DELLA DEVICE ATTRIBUTE WO
- Page 363 and 364:
STRUTTURA DELLA DEVICE DRIVER STATU
- Page 365 and 366:
Servizio 00: Init I device driver -
- Page 367 and 368:
STRUTTURA DEL BPB OFF DIM CAMPO 00h
- Page 369 and 370:
DEVICE DRIVER, SERV. 02: USO DEL RE
- Page 371 and 372:
DEVICE DRIVER, SERV. 04: USO DEL RE
- Page 373 and 374:
DEVICE DRIVER, SERV. 07: USO DEL RE
- Page 375 and 376:
I device driver - 373 periferiche s
- Page 377 and 378:
DEVICE DRIVER, SERV. 19: USO DEL RE
- Page 379 and 380:
I D E V I C E D R I V E R E I L C I
- Page 381 and 382:
I device driver - 379 // valore sec
- Page 383 and 384:
I device driver - 381 // differenza
- Page 385 and 386:
I device driver - 383 DUMMY helloSt
- Page 387 and 388:
} bOff -= temp; // Occorre ancora c
- Page 389 and 390:
_SCNSEG SEGMENT WORD PUBLIC 'DATA'
- Page 391 and 392:
; ASSEMBLER SOURCE FILE PER DEVICE
- Page 393 and 394:
I device driver - 391 ;------------
- Page 395 and 396:
public __osminor __osminor db 0 ; r
- Page 397 and 398:
EXECUTE: EXITDRIVER: _Interrupt end
- Page 399 and 400:
_SCNSEG ENDS I device driver - 397
- Page 401 and 402:
NOT_MIDNIGHT: I device driver - 399
- Page 403 and 404:
I device driver - 401 ;------------
- Page 405 and 406:
_inputND endp I device driver - 403
- Page 407 and 408:
public _outputVerify _outputVerify
- Page 409 and 410:
I device driver - 407 ;------------
- Page 411 and 412:
; ; funzione genericIOCTL() dummy u
- Page 413 and 414:
public _endOfServices _endOfService
- Page 415 and 416:
I device driver - 413 ;------------
- Page 417 and 418:
int 21h pop ds ret __restorezero en
- Page 419 and 420:
I device driver - 417 La setStack()
- Page 421 and 422:
; funzione per ritornare allo stack
- Page 423 and 424:
I device driver - 421 Un altro tass
- Page 425 and 426:
I device driver - 423 je ENDCMD ; L
- Page 427 and 428:
+-ddsetcmd & +-dddiscrd I device dr
- Page 429 and 430:
ALTRE FUNZIONI I device driver - 42
- Page 431 and 432:
BYTE mdByte; BYTE far *trAddr; WORD
- Page 433 and 434:
extern RequestHeaderFP RHptr; // pu
- Page 435 and 436:
I device driver - 433 DEVHDR DevDrv
- Page 437 and 438:
I device driver - 435 // caratteri
- Page 439 and 440:
} if(!optCnt) { fprintf(stderr,"%s:
- Page 441 and 442:
Logical Name: " " New Header Fields
- Page 443 and 444:
I device driver - 441 Le complicazi
- Page 445 and 446:
I device driver - 443 che valorizza
- Page 447 and 448:
I device driver - 445 caso di un de
- Page 449 and 450:
{ } I device driver - 447 asm db 40
- Page 451 and 452:
printf("malloc(100): %04X\n",p[i] =
- Page 453 and 454:
#define IOCTL_CATEGORY 0x62 // Iden
- Page 455 and 456:
I device driver - 453 // iniziale d
- Page 457 and 458:
I device driver - 455 E la generic
- Page 459 and 460:
} I device driver - 457 if((handle
- Page 461 and 462:
L I N G U A G G I O C E P O R T A B
- Page 463 and 464:
Linguaggio C e portabilità - 461 m
- Page 465 and 466:
Linguaggio C e portabilità - 463 u
- Page 467 and 468:
D I T U T T O . . . D I P I Ù Di t
- Page 469 and 470:
Di tutto... di più - 467 del file)
- Page 471 and 472:
COMPILABILE CON TURBO C++ 1.0 tcc -
- Page 473 and 474:
#pragma warn -pia #include #includ
- Page 475 and 476:
} } ++sx; ++px; Di tutto... di più
- Page 477 and 478:
Di tutto... di più - 475 void _set
- Page 479 and 480:
Di tutto... di più - 477 standardi
- Page 481 and 482:
Le funzioni per la libreria Di tutt
- Page 483 and 484:
Di tutto... di più - 481 Tralascia
- Page 485 and 486:
optArray[3].opt 'b' Terza opzione s
- Page 487 and 488:
#define OPTION_A 1 #define OPTION_B
- Page 489 and 490:
SINTASSI int cdecl gopError(struct
- Page 491 and 492:
} Di tutto... di più - 489 if(!(tm
- Page 493 and 494:
sapere semplicemente qual è lo swi
- Page 495 and 496:
optLetter o argLetter processata; u
- Page 497 and 498:
} } return((int)cmd->opt); } cmd->a
- Page 499 and 500:
extern char *sys_errlist[]; extern
- Page 501 and 502:
if(isDriveRemote(0) == -1) perror("
- Page 503 and 504:
} if(fclose(file)) if(!ret) ret = 9
- Page 505 and 506:
Di tutto... di più - 503 restituis
- Page 507 and 508:
Di tutto... di più - 505 difficile
- Page 509 and 510:
Di tutto... di più - 507 necessari
- Page 511 and 512:
Di tutto... di più - 509 KBDPLUS a
- Page 513 and 514:
}; Di tutto... di più - 511 {LSHF_
- Page 515 and 516:
Di tutto... di più - 513 crlf.....
- Page 517 and 518:
} else if(tsrtest()) if(argv[1][0]
- Page 519 and 520:
CA 01 1C 0D - Il tasto ESC, premuto
- Page 521 and 522:
Di tutto... di più - 519 mov ah,al
- Page 523 and 524:
} char shift[MAXLEN], *bufptr; regi
- Page 525 and 526:
***********************************
- Page 527 and 528:
INT 21H, SERV. 0CH: PULISCE IL BUFF
- Page 529 and 530:
#define strptr_asm TSRdata+16 Di tu
- Page 531 and 532:
Di tutto... di più - 529 void TSRd
- Page 533 and 534:
Di tutto... di più - 531 (la tecni
- Page 535 and 536:
cc -Tm2 -O -d -rd -k- videocap.c Di
- Page 537 and 538:
} Di tutto... di più - 535 asm jne
- Page 539 and 540:
{ } Di tutto... di più - 537 asm p
- Page 541 and 542:
} asm jmp EXIT_INT; NEXT1: asm cmp
- Page 543 and 544:
ipristinando i vettori di interrupt
- Page 545 and 546:
sacrificata in questo caso per otte
- Page 547 and 548:
Di tutto... di più - 545 void save
- Page 549 and 550:
} } else { printf(UnInstErrMsg); re
- Page 551 and 552:
Di tutto... di più - 549 Il framme
- Page 553 and 554:
Di tutto... di più - 551 le aree d
- Page 555 and 556:
{ } Di tutto... di più - 553 asm {
- Page 557 and 558:
}; {"Date/Time", 4,"Invalid"}, {"Ha
- Page 559 and 560:
eadfile() legge in un buffer il con
- Page 561 and 562:
long cdecl date2jul(int day,int mon
- Page 563 and 564:
***********************************
- Page 565 and 566:
Di tutto... di più - 563 Dette lim
- Page 567 and 568:
@' le virgolette ("); utile per ins
- Page 569 and 570:
int isleapyear(int year); int jul2d
- Page 571 and 572:
char *getDay1(void) // giorno del m
- Page 573 and 574:
}; Di tutto... di più - 571 {'G',g
- Page 575 and 576:
} } Di tutto... di più - 573 // ad
- Page 577 and 578:
Di tutto... di più - 575 elaborazi
- Page 579 and 580:
se l'impostazione della nuova dimen
- Page 581 and 582:
timegone -d04 * Di tutto... di più
- Page 583 and 584:
l'opzione -r rovescia il risultato
- Page 585 and 586:
}; {'y',valid_y}, {ERRCHAR,err_hand
- Page 587 and 588:
int isNumeric(char *string) { regis
- Page 589 and 590:
int ctl_strings(struct OPT *vld,int
- Page 591 and 592:
int err_handle(struct OPT *vld,int
- Page 593 and 594:
Di tutto... di più - 591 :ATTESA T
- Page 595 and 596:
Di tutto... di più - 593 DATECMD C
- Page 597 and 598:
"; Di tutto... di più - 595 char *
- Page 599 and 600:
stata richiesta una sola, l'opzione
- Page 601 and 602:
} inibuf += strlen(begStr); // nuov
- Page 603 and 604:
I l c o m a n d o F O R r i v i s i
- Page 605 and 606:
#define MAXLIN 256 // main() gestis
- Page 607 and 608:
@ECHO OFF Di tutto... di più - 605
- Page 609 and 610:
char *makeTempPath(char *tempPath);
- Page 611 and 612:
{ } register i = 0, j; char *newPtr
- Page 613 and 614:
Di tutto... di più - 611 (prototip
- Page 615 and 616:
#define ITERATIONS ( \ ((sizeof(lon
- Page 617 and 618:
Di tutto... di più - 615 generare
- Page 619 and 620:
C O N T E N U T O D E L F L O P P Y
- Page 621 and 622:
\COMPILED Contenuto del floppy disk
- Page 623 and 624:
_ _ _ CLEARKBD.C _ _ _ CTLALDEL.C _
- Page 625 and 626:
_ _ STRUCT2.C _ _ STRUCT3.C _ _ _ +
- Page 627 and 628:
I N D I C E D E L L E F I G U R E I
- Page 629 and 630:
628 - Tricky C INT 67H, SERV. 50H:
- Page 631 and 632:
630 - Tricky C DEVICE DRIVER, SERV.
- Page 633 and 634:
632 - Tricky C di bit; 63 di struct
- Page 635 and 636:
634 - Tricky C exit(); 115; 351 EXT
- Page 637 and 638:
636 - Tricky C MORE; 606 MOV; 179 M
- Page 639 and 640:
638 - Tricky C struct OPT; 516 stru