Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
gestione a finestre 2 (dos) - PUNT_VID.PAS

PUNT_VID.PAS

Caricato da: David
Scarica il programma completo

  1. unit punt_vid;
  2.  
  3.  
  4.      (**********************)  interface  (****************************)
  5.  
  6. TYPE
  7.   PSchermo=^TipoSchermo;
  8.   TipoSchermo=array[1..25,1..80] of record
  9.       ch:char;
  10.       at:byte;
  11.       end;
  12.   (*array identico alla memoria video*)
  13.   Pschermata=^schermata;
  14.   schermata=record
  15.     schermo:TipoSchermo;
  16.     prox,prec:Pschermata;
  17.     end;
  18.   (*lista doppia che andr… a memorizzare le schermate*)
  19.  
  20. var
  21.   video:PSchermo;
  22.   corrente,precedente,successivo,ultimo,primo:Pschermata;
  23.  
  24. procedure punt_avanti;
  25. (*memorizza ultima schermata*)
  26. procedure punt_indietro;
  27. (*ritorno alla schermata precedente*)
  28. procedure azzera_punt_video;
  29. (*azzera lista puntatori*)
  30.  
  31.  
  32.  
  33.  
  34.    (********************) IMPLEMENTATION (********************)
  35.  
  36.  
  37. procedure punt_avanti;
  38. begin
  39.   if primo=nil
  40.     then begin
  41.            new(corrente);
  42.            primo:=corrente;
  43.            ultimo:=corrente;
  44.            corrente^.prox:=nil;
  45.            corrente^.schermo:=video^;
  46.          end
  47.     else begin
  48.            precedente:=corrente;
  49.            new(corrente);
  50.            precedente^.prox:=corrente;
  51.            ultimo:=corrente;
  52.            corrente^.prox:=nil;
  53.            ultimo^.prec:=precedente;
  54.            corrente^.schermo:=video^;
  55.          end;
  56. end;
  57.  
  58.  
  59.  
  60.  
  61. procedure punt_indietro;
  62. begin
  63.   if ultimo <> primo
  64.     then begin
  65.            corrente:=ultimo;
  66.            ultimo:=corrente^.prec;
  67.            dispose(corrente);
  68.            corrente:=ultimo;
  69.            video^:=corrente^.schermo;
  70.          end;
  71. end;
  72.  
  73.  
  74.  
  75. procedure azzera_punt_video;
  76. begin
  77.   if primo=nil then exit;
  78.   corrente:=primo;
  79.   while corrente<>nil
  80.      do begin
  81.           successivo:=corrente^.prox;
  82.           dispose(corrente);
  83.           corrente:=successivo;
  84.         end;
  85.   primo:=nil;
  86. end;
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93. begin
  94.   new(video);
  95.   if mem[$0000:$0449]=7
  96.     then video:=ptr($B000,$0000)
  97.     else video:=ptr($B800,$0000);
  98.   primo:=nil;
  99. end.