i write this for one msx-friend but i can't test because i are at work... please somebody can test?

Door flyguille

Prophet (3028)

afbeelding van flyguille

01-07-2004, 20:16

1 REM ************************************************************************
2 REM * THIS EXAMPLE WILL MOVE ALL THE SCREEN TEXT, ONE POSITION TO THE LEFT *
3 REM * THE COPY IS DONE FROM A SQUARE DEFINED BY (X1,Y1)-(X2,Y2) AND THE    *
4 REM * SAME IS MOVE TO (X3,Y3)                                              *
5 REM ************************************************************************
10 CLEAR 200,&HDFFF:SCREEN 1:LINE INPUT "WRITE ANYTHING IN THE SCREEN PLEASE:";A$
20 AD=&HE000:GOSUB 1000:DEF USR0=&HE007
30 AD=&HE100:GOSUB 1000:DEF USR1=&HE107:REM !!!LOAD THE ROUTINE SEVERAL TIMES TO PRESET SEVERAL MOVEMENTS.!!!
40 POKE &HE000,1:POKE &HE001,0: REM X1 = 1 , Y1= 0
50 POKE &HE002,31:POKE &HE003,23: REM X2= 31, Y2= 23
60 POKE &HE004,0:POKE &HE005,0: REM X3 = 0 , Y3=0
70 A=USR0(0)
80 A$=INKEY$:IF A$="" THEN GOTO 70
90 END
1000 REM ************************************
1010 REM * LOADER OF THE ROUTINE IN MEMORY  *
1020 REM * AD = INITIAL ADDRESS  .          *
1030 REM ************************************
1040 RESTORE 1000:X=AD
1050 READ A$:IF A$="END" THEN RETURN
1060 IF MID$(A$,1,1)="!" THEN POKE X,VAL("&H"+MID$(A$,2))+val("&h"+left$(hex$(AD),2)):GOTO 1080
1070 POKE X,VAL("&H"+A$)
1080 X=X+1:GOTO 1050
1090 DATA 00,00,00,00,00,00,00 
1100 DATA 3A,05,!0,47,3A,03,!0,4F,3A,01,!0,B8,30,07,3A,01,!0,4F,3A,03,!0,47
1110 DATA 3A,05,!0,30,04,5F,78,91,83,32,06,!0
1120 DATA C5
1130 DATA 68,26,00,29,29,29,29,29,3A,00,!0,5F,16,00,19,11,00,18,19,3A,00,!0,47,3A,02,!0,3C,90
1140 DATA 28,27,4F,06,00,11,C0,!0,C5,D5,CD,59,00,3A,06,!0,6F,26,00,29,29,29,29,29,3A,04,!0,5F
1150 DATA 16,00,19,11,00,18,19,EB,E1,C1,CD,5C,00
1160 DATA C1,78,B9,C8,38,0A,05,3A,06,!0,3D,32,06,!0,18,AA,04,3A,06,!0,3C,32,06,!0,18,A0
1170 DATA END

xx00 X1
xx01 Y1
xx02 X2
xx03 Y2
xx04 X3
xx05 Y3
xx06 YT


FORMATO ASSEMBLER
-----------------
LD A,(Y3)
LD B,A
LD A,(Y2)
LD C,A
LD A,(Y1)
CP B
JR NC,7   ; IF Y3>Y1 THEN Y=Y2:LY=Y1 ELSE Y=Y1:LY=Y2
LD A,(Y1)
LD C,A
LD A,(Y2)
LD B,A

LD A,(Y3)
JR NC,04
LD E,A
LD A,B
SUB C
ADD A,E
LD (YT),A

PUSH BC   ; B= Y

LD L,B
LD H,00
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD A,(X1)
LD E,A
LD D,00
ADD HL,DE
LD DE,1800h
ADD HL,DE
LD A,(X1)
LD B,A
LD A,(X2)
INC A
SUB B

JR Z,27     ; SECURITY TEST
LD C,A
LD B,00
LD DE,00C0+ORG   ; BUFFER MEMORY ADDRESS.
PUSH BC
PUSH DE
CALL 0059h
LD A,(YT)
LD L,A
LD H,00
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD A,(X3)
LD E,A
LD D,00
ADD HL,DE
LD DE,1800h
ADD HL,DE
EX DE,HL
POP HL
POP BC
CALL 005Ch

POP BC	; B=Y  C= Y2
LD A,B
CP C
RET Z
JR C,0A
DEC B
LD A,(YT)
DEC A
LD (YT),A
JR AA
INC B
LD A,(YT)
INC A
LD (YT),A
JR A0


Aangemeld of registreer om reacties te plaatsen

Van flyguille

Prophet (3028)

afbeelding van flyguille

01-07-2004, 20:54

tested by Quibus and was reedit to fix some bugs.