100 CALL CLEAR::DIM A$(10)
$MLC F 110 10 3000
300 CALL CLEAR::CALL SCREEN(1)
310 FOR I=1 TO 8::CALL COLOR(I,1,1)::NEXT I
315 PRINT "  `abcdefghijklmnopqrstuvw"::PRINT::PRINT
320 PRINT "  `a   ef  ijk      rstuv "
330 PRINT "   ab def   jk     qr   vw"
340 PRINT "   abcdef   jk    pq      "
350 PRINT "   a c ef   jk    pq      "
360 PRINT "   a   ef   jk    pq      "
370 PRINT "   a   ef   jk  n  qr   vw"
380 PRINT "  `ab defg ijklmn   rstuv "
385 PRINT::PRINT::PRINT "  `abcdefghijklmnopqrstuvw"
387 PRINT::PRINT::PRINT
390 I=1::RESTORE 2000
400 READ A$(I)::IF A$(I)="*" THEN A$(I)=""::GOTO 500
410 I=I+1::GOTO 400
500 CALL LINK("FSCR",A$())
510 CALL CLEAR::CALL CHARSET::END
2000 DATA "WELCOME TO THE ONE-PIXEL-SCROLL made with MLC (My Little Compiler)."
2010 DATA " NO TABLES ARE PREPARED, everything is done ON THE FLY with the "
2020 DATA "CURRENT DEFINITIONS of the Characters!"
2100 DATA "                        ","*"
$FSCR
    DIMTABLE E 192  ; buffer for 24 char
    DIMTABLE F 768  ; buffer to load 96 defs
    DIMTABLE G 8    ; for one def
    BMOVEVTOC 1024 768 F    ; load all characters
    CLEAR A
    FOR I 0 191
        PUTTABLE E(I) A     ; clear scroll zone
    NEXT
    BMOVECTOV E 192 1536    ; and init the 24 chars
    COLOR 12 1 10           ; color for M
    COLOR 13 1 11           ; color for L
    COLOR 14 1 5            ; color for C
    LET S 1                 ; start string
    LET R S
    LET U 1                 ; to access 1st string array
    DO  
        GETTABLE U(R) M     ; one string	  
    WHILE<>                 ; while not empty
        DEC Z               ; size-1
        FOR I 0 Z
            GETTABLE M(I) S ; one char from string
            SUB S 32
            MUL S 8
            ADD S F         ; address of definition
            WMOVE S 4 G     ; copy 4 words to G
            NDO X 8         ; for 8 bits to scroll
                LET J 7
                LET N 191
                REPEAT
                    GETTABLE G(J) A
                    IF<>
                        ADD A A
                        PUTTABLE G(J) A
                    ENDIF
                    LET C A
                    NDO Y 24
                        GETTABLE E(N) A
                        IF=
                            COMPARE C 256
                            IF<THEN x
                            INC A
                        ELSE
                            ADD A A
                            COMPARE C 256
                            IF>=
                                INC A
                            ENDIF
                        ENDIF
                        PUTTABLE E(N) A
                        LET C A
                        LABEL x
                        SUB N 8
                    NLOOP
                    ADD N 191
                    DEC J
                UNTIL<
                BMOVECTOV E 192 1536
            NLOOP
        NEXT
        INC R
    LOOP     
$$
$END


