VBI i DLI w MadPascal-u.

Kiedyś eksperymentowałem z Action!, dziś analogiczny przykład w MadPascal:

uses crt;

const
dl: array [0..32] of byte = (
112, 112, 112, 66, 0, 64, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 130, 86, 72, 67, 65, 
lo(word(@dl)), hi(word(@dl))
);

var
col0: byte absolute $2c4;
col1: byte absolute $2c5;
savmsc: word absolute $58;
nmien: byte absolute $d40e;
pc: ^byte; tmp: word; 
hscrol: byte absolute $d404;
vcount: byte absolute $d40b;
colt: byte absolute $d017;
dlist: word absolute $230;
i,j,k,l,indx: byte;

procedure dli; interrupt; 
begin
 asm { phr };
 inc(indx);
 for i:=0 to 7 do
  begin   
   if indx>30 then indx:=0;
   colt:=vcount+indx;
  end;
 asm { plr };
end;
 
procedure scroll; interrupt;
begin
 j:=j+1;
 if j=16 then 
  begin
   j:=0; dec(pc^,2); k:=k+1;
   if k=14 then 
    begin
     k:=0; pc^:=tmp;
    end
  end;
  hscrol:=j;
 asm { jmp $E462 };  
end;

begin
 i:=0; j:=0; k:=0; indx:=0;
 dlist:=word(@dl);
 
 SetIntVec(iVBL, @scroll);
 SetIntVec(iDLI, @dli);
 nmien:=$c0;

 pc := @dl;
 inc(pc, 28);

 tmp := pc^+6; 
 col0 := 14; col1 := 14;
 savmsc := $4000;

 for l:=0 to 22 do 
  writeln(' mp rulez! ');

 repeat until keypressed;
end.

mprulez

Niezaprzeczalną zaletą duetu mp+mads jest optymalizacja i wielkość pliku wynikowego:

$ mads -x -o:scroll.obx -i:/e/mp/base scroll.a65
SYSTEM: $205D..$205C
CRT: $205D..$2070
CODE: $2000..$226F
DATA: $2270..$2282
Writing listing file…
Writing object file…
3983 lines of source assembled in 5 pass
640 bytes written to the object file

 

AspeQt i FT312D.

Montezuma podesłał mi linka ze specyfikacją kabla Digitus:

http://www.morele.net/digitus-adapter-usb-rs232-da-70160-698967/

i myślę, że ma to spore szanse jako alternatywa do FT232 na Androidzie. Tym bardziej, że Open Accessory Mode nie wymaga żadnych sterowników… Zobaczymy co z tego wyjdzie😉.

Mój Samsung nie ma usb-host ale open accessory mode działa😉. Już prawie… Jeszcze tylko dołożyć TTL level shifter 3.3<->5V i powinno działać.

Aktualizacja:

java.io.IOException: write failed: ENODEV (No such device)
at libcore.io.IoBridge.write(IoBridge.java:455)
at java.io.FileOutputStream.write(FileOutputStream.java:187)
at dji.midware.usb.P3.UsbAccessoryService$1.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)

Jest problem z open accessory mode, nierozwiązany od kilku lat…

Repentless.

Dawno nic mnie tak nie rozwaliło (ale ostrzegam, nie dla osób nadmiernie wrażliwych). Płyta jest niezła, zważywszy na wiek i ostatnie wydarzenia w Slayerze.

PS. Pan „Maczeta” miażdży!