home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / MBUG / MBUG094.ARC / HIRES5A.I < prev    next >
Text File  |  1979-12-31  |  4KB  |  101 lines

  1. { Inline machine-code version of HiRes and HiDot with comments/mnemonics
  2.   Written by Daniel Prager 1986 }
  3.  
  4. {This code is an adaption of the HiDot function created by Daniel Prager 1986
  5.   to use the full Premium Graphics in Hires mode
  6.   modification by R.K.Hallworth, Donvale Christian School, April 1987}
  7.  
  8. Var   ConOutAdr,CursPos :integer; {store location of bios VDU driver}
  9.       VDUstatus         :array [1..5] of byte;{ESC,CURSPOS,LINE,UNDERLINE,INVERSE}
  10. Const
  11.       UsedPCGs=0;
  12.  
  13. Procedure ClearHiRes;
  14.  
  15. Var RAMBank,PCGByte:integer;
  16.  
  17. Begin
  18.          port[28]:=144;
  19.          For PCGByte:=0 to $7FF do Mem[$F000+PCGByte]:=0;
  20.          port[28]:=128;
  21.          For PCGByte:=0 to $7FF do Mem[$F000+PCGByte]:=32
  22. end;
  23.  
  24.  
  25. Procedure VduOut(Ch:Char);
  26.  
  27. Var Bt,count,PCGNo,PCGBank:byte;
  28.     PCGPos:Integer;
  29.     Scratch : array [0..15] of Byte;  {Scratch for desired PCG}
  30.  
  31. procedure StorePCG(Ch:Char);
  32.  
  33. begin
  34.  
  35. inline(           {SELECT CHARACTER  ROM ON}
  36.        $3E/ $01/          {         LD      A,1             }
  37.        $D3/ $0B/          {         OUT     (ROMPORT),A     }
  38.                   {Ord(Ch)*16 + $F000 }
  39.        $3A/CH/            {         LD      A,(CH)          }
  40.        $6F/               {         LD      L,A             }
  41.        $26/0/             {         LD      H,0             }
  42.        $29/               {         ADD     HL,HL           }
  43.        $29/               {         ADD     HL,HL           }
  44.        $29/               {         ADD     HL,HL           }
  45.        $29/               {         ADD     HL,HL           }
  46.        $11/$F000/         {         LD      DE,$F000        }
  47.        $19/               {         ADD     HL,DE           }
  48.                      {Move Character to SCRATCH}
  49.        $11/SCRATCH/       {         LD DE,SCRATCH           }
  50.        $01/16/0/          {         LD BC,16                }
  51.        $ED/$B0/           {         LDIR                    }
  52.        $AF/               {         XOR A                   }
  53.        $D3/ $0B           {         OUT     (ROMPORT),A     }
  54.       )
  55.  
  56. end;
  57.  
  58. Procedure Invert;
  59.  
  60. begin
  61. inline(    $06/16/        {         LD B,16                  }
  62.            $21/SCRATCH/   {         LD HL,SCRATCH            }
  63.            $7E/           {LOOP:    LD A,(HL)                }
  64.            $2F/           {         CPL                      }
  65.            $77/           {         LD (HL),A                }
  66.            $23/           {         INC HL                   }
  67.            $10/$FA)        {         DJNZ LOOP                }
  68.  
  69. end;
  70.  
  71. Procedure ScrollUp(LineWidth:integer);
  72.  
  73. begin
  74.    inline(       {Select Screen}
  75.             $18/14/            {         JR      START           }
  76.             $11/$F000/         {MOVE:    LD      DE,$F000        }
  77.             {$21/$F040/}         {         LD      HL,$F040        }
  78.  
  79.             $2A/LineWidth/     {         LD      HL,(LineWidth)  }
  80.             $26/$F0/           {         LD      H,$F0           }
  81.  
  82.             $01/960/           {         LD      BC,960          }
  83.             $ED/$B0/           {         LDIR                    }
  84.             $C9/               {         RET                     }
  85.  
  86.             $3E/ $00/          {:START   LD      A,0             }
  87.             $D3/ $0B/          {         OUT     (ROMPORT),A     }
  88.             $CD/*-17/          {         CALL    MOVE            }
  89.             $3E/144/           {         LD      A,144           }
  90.             $D3/28/            {         OUT     (28),A          }
  91.             $CD/*-24/          {         CALL    MOVE            }
  92.             $3E/128/           {         LD      A,128           }
  93.             $D3/28/            {         OUT     (28),A          }
  94.             $3E/32/            {         LD      A,32            }
  95.             $06/64/            {         LD      B,64            }
  96.             $21/$F3C0/         {         LD      HL,$F3C0        }
  97.             $77/               {LOOP:    LD      (HL),A          }
  98.             $23/               {         INC     HL              }
  99.             $10/$FC)           {         DJNZ    LOOP            }
  100.  
  101. end;