

100 CALL CLEAR
$MLC F 110 10 3000
300 GOSUB 1500
330 CALL CLEAR::CALL LINK("TINTIN",Z)
335 CALL CLEAR::PRINT "THE END..."::END

;
; borders white on black
; and text yellow on black
;
1500 RESTORE 2000::CALL CLEAR::CALL SCREEN(2)::CALL COLOR(9,16,2)
1510 FOR I=1 TO 8::CALL COLOR(I,12,2)::NEXT I
;
; display text with borders and centers
;
1520 READ R$::I=LEN(R$)::J=INT(I/2)::IF I=0 THEN RETURN
1530 PRINT "`a"&RPT$(" ",12-J)&R$&RPT$(" ",12+J-I)&"`a";
1540 READ R$::I=LEN(R$)::J=INT(I/2)::IF I=0 THEN RETURN
1550 PRINT "bc"&RPT$(" ",12-J)&R$&RPT$(" ",12+J-I)&"bc";::GOTO 1520
2000 DATA " "," ","WELCOME TO A NEW WORLD"
2010 DATA " "," "," "," "
2020 DATA "NO 3D EFFECT"," "," "," "
2030 DATA "NO SOUND"," "," "," "
2040 DATA "NO COLOR"," "," "," "
2050 DATA "NO STORY"," "," "," "
2060 DATA "NO SPIELBERG"," "," "," "
2070 DATA " "
2080 DATA "ONLY..."
2090 DATA " "," "," "," "," "," "," "," "," "," "," "," ",""
;
; here MLC routine TINTIN
;

$EQU
	\image			M
	\myfile			P
	\errorcode		Z
	\pab			A
	\vdp-free		&h831A
$$

$TINTIN
	SCREEN 1		; black background
	FOR I 12 15
		COLOR I 16 1	; white on black for the "movie"
	NEXT
	FOR I 4 11
		COLOR I 3 1	; green for text
	NEXT
	COLOR 6 4 1		; light green for great title

	STARTDATA
		STRING " PURE...                        "
		STRING "                                "
		STRING " 0     0  0 00   0     0  0 00  "
		STRING "000       00  0 000       00  0 "
		STRING " 0     0  0   0  0     0  0   0 "
		STRING " 0     0  0   0  0     0  0   0 "
		STRING " 0  0  0  0   0  0  0  0  0   0 "
		STRING "  00  00 000 000  00  00 000 000"
		STRING "                                "
		STRING "             `flrx              "
		STRING "             agmsy              "
		STRING "             bhntz              "
		STRING "             ciou{              "
		STRING "             djpv|              "
		STRING "             ekqw}              "
		STRING "                                "
		STRING " DIRECT VIDEO STREAM FROM DISK! "
		STRING "      (MY LITTLE COMPILER)      "
	ENDDATA \image
	;
	; this assembly routine turns every ASCII char to
	; its screen equivalent: ASCII+96
	;
	$[
		mov @\image,r0	; points to text bloc
		li r1,>6060	; offset for XB characters on screen
		li r2,288	; 18 lines with 16 words
	ANOTHER:
		a r1,*r0+	; add offset to chars
		dec r2		; counter
		jne ANOTHER:		; jump "here" if not finished
	$]

	BMOVECTOV \image 576 96	; copy text to third screen line
	STARTDATA				; prepares the PAB for file access
		BYTE 0				; no Opcode for now
		FLAGS sequential, internal, fixed, input
		WORD 1536			; address for definition of char 96 and followings
		BYTE 240			; max length
		BYTE 240			; length
		WORD 0				; no rec number for sequential
		BYTE 0				; offset unused
		BYTE 10				; name is 10 bytes long
		STRING "DSK1.VIDEO"
	ENDDATA \pab

	LET B \vdp-free
	GETTABLE B(0) \myfile		; peek(831A) = VDP address of free space
	SUB \myfile 22				; place for PAB so \myfile = PAB ADDRESS
	BMOVECTOV \pab 22 \myfile	; copy PAB to VDP Ram
	FOPEN \myfile				; open the file
	IF=			; if OK, go on!
		REPEAT
			FRESTORE \myfile			; to beginning of file
			NDO N 5		; five images
				PUTTABLE \myfile(5) 240	; size to read.
				FREAD \myfile			; read 240 bytes into char defs
				NDO X 3000				; little wait loop
				NLOOP
			NLOOP
			KEY 0				; a key pressed?
		UNTIL>=					; if no, go on
	ENDIF
	FCLOSE \myfile
	PUTPARAM 1 \errorcode					; return Z, the file error code (if any)
$$
$CHAR
	S48.7EFFFFFFFFFFFF7E
	S96.C0C0C0FFFFFFFFFF060606FEFEFEFEFEC0C0C0C0C0C0C0C00606060606060606 ; border
$$
$END