Bugs corrigidos nos INCs: MISC.INC: mem[$fcb6]:=hi(x2); => mem[$fcb6]:=hi(y2); procedure line_bf(x,y,x2,y2:integer;kleur,log_op:byte); begin mem[$fcb3]:=lo(x2);mem[$fcb4]:=hi(x2); mem[$fcb5]:=lo(y2);mem[$fcb6]:=hi(y2); mem[$f3f2]:=kleur; mem[$fb02]:=log_op; inline($ed/$4b/x/ { LD BC,(X) } $ed/$5b/y/ { LD DE,(Y) } $fd/$2a/$f7/$fa/ { LD IY,(&HFAF7) } $dd/$21/$cd/$00/ { LD IX,&H00CD } $cd/$1c/$00/ { CALL &H001C } $fb) { EI } end; MSX.INC: Var _SCREEN : Byte; Procedure Print(Col,Lin:integer; color:byte; Texto:TPstring); Var Indice: integer; Letra: Char; FORCLR:Byte Absolute $F3E9; OldColor: integer; maxCol : integer; HCol, LCol : Byte; Begin OldColor:=FORCLR; FORCLR := Color; maxCol := 255; if (_SCREEN=6) or (_SCREEN=7) then maxCol:=511; inline($f3); For Indice:=1 to Length(Texto) do begin Letra:=Texto[Indice]; HCol := hi(Col); LCol := lo(Col); inline( $3A/LCol/ { LD A,col ; Max 255!} { Correct by MarMSX } $32/$B7/$FC/ { LD ($FCB7),col } $3A/HCol/ { LD A,col ; High Col} $32/$B8/$FC/ { LD ($FCB7),col } $3A/lin/ { LA A,lin } $32/$B9/$FC/ { LD ($FCB9),lin } $3a/Letra/ $fd/$2a/$c0/$fc/ $DD/$21/$8d/$00/ $cd/$1c/$00 ); Col:=Col+6; if Col>maxCol then begin Col:=0; Lin:=Lin+8; end; end; inline($fb); FORCLR:=OldColor; end; Procedure Screen(mode:Byte); { Igual ao screen do Basic } Const EXPTBL = $fcc0; CALSLT = $001C; CHGMOD = $005F; Begin Inline ( $f3 { di } /$3a/mode { LD A,(MODE) } /$fd/$2a/$c0/$fc { LD IY,(EXPTBL - 1 } /$DD/$21/$5f/00 { LD IX,CHGMOD } /$CD/$1c/00 { CALL CALSLT } /$fb { EI } ); _SCREEN:=mode; End;