home *** CD-ROM | disk | FTP | other *** search
- **************************************************************
- * THE TWIST SCROLL *
- * CODING JANUARY 1989 BY MANIKIN *
- * OF THE LOST BOYS *
- * *
- * TO CONTACT US: 22 OXFORD RD *
- * TEDDINGTON ALL CORRESPONDENCE *
- * MIDDX WELCOMED ABOUT SOURCE* *
- * TW11 OPZ PROGRAMMING ETC *
- * ENGLAND WE WILL ATTEMPT TO *
- * ANSWER ALL LETTERS. *
- **************************************************************
-
- clr.l -(sp) SET SUPERVISOR
- move.w #$20,-(sp)
- trap #1
- add.l #6,sp
- move.l d0,oldssp
- dc.w $a00a LOSE MOUSE
- move.l #$00000777,$ff8240 SET A FEW COLORS
- move.l #$04440777,$ff8244
- BSR MAKEFONTS MAKE UP THE FONTS
- MOVE.W #2,-(SP) GET PHYSBASE
- TRAP #14
- ADD.L #2,SP
- MOVE.L D0,SCREEN
- MOVE.L D0,SAVESCREEN
- MOVE.L #TEXT,-(SP) CLEAR THE SCREEN
- MOVE.W #9,-(SP)
- TRAP #1
- ADD.L #6,SP
-
- ****************************
- * THE MAIN LOOP *
- ****************************
-
- VBLOOP TST.W SWITCH WHICH SCREEN DISPLAY
- BNE.S TIME
- MOVE.L #$78000,SCREEN1 SCREEN1= PHYSBASE
- MOVE.L #$70000,SCREEN SCREEN= LOGBASE
- MOVE.W #1,SWITCH CHANGE FOR NEXT TIME
- BRA.S TIME2
- TIME MOVE.L #$70000,SCREEN1 SCREEN= PHYSBASE
- MOVE.L #$78000,SCREEN SCREEN1=PHYSBASE
- MOVE.W #0,SWITCH CHANGE FOR NEXT TIME
- TIME2 MOVE.W #-1,-(SP) SET SCREENS USING XBIOS 5
- MOVE.L SCREEN1,-(SP) PHYS
- MOVE.L SCREEN,-(SP) LOG
- MOVE.W #5,-(SP)
- TRAP #14
- ADD.L #12,SP
- MOVE.W #2,-(SP) ANY KEYS WAITING
- MOVE.W #1,-(SP)
- TRAP #13
- ADDQ.L #4,SP
- TST D0 TEST FOR KEY
- BNE TWISTEND YES THEN EXIT THE TWIST SCROLL
- MOVE.W #37,-(SP) WAIT FOR VBL
- TRAP #14
- ADD.L #2,-(SP)
- ADD.L #8640,FONTTYPE TAKE THE NEXT FONT
-
- CMP.L #FONTEND,FONTTYPE IS IT PAST THE LAST FONT?
- BNE.S CONT IF NO THEN CONTINUE
- MOVE.L #FONT1,FONTTYPE ELSE RESET FONT POINTER TO FIRST FONT
- ADD.L #1,SCROLLPOINT ADVANCE SCROLLINE BY 1 CHARACTER
- MOVE.L SCROLLPOINT,A6 GET SCROLL
- CLR.L D6
- MOVE.B (A6)+,D6
- CMP.B #$FF,21(a6) TEST FOR END OF SCROLLINE
- BNE.S CONT NO THEN CONTINUE
- MOVE.L #SCROLLINE,SCROLLPOINT ELSE RESTART SCROLL
-
- ********************************************************
- *WELL THIS IS THE ACTUAL SCROLLINE. EACH CHARACTER IS *
- *IS PUT ON THE SCREEN BY ITS OWN LITTLE ROUTINE. *
- *WHICH PUTS ITS CHARACTER TO A PARTICULAR POINT IN THE *
- *BUFFER. THE FIRST PART OFF THE CHARACTER IS ADDED TO *
- *THE SCREEN WHILE THE SECOND PART IS MOVED STRAIGHT TO *
- *THE SCREEN. IE FIRST WORD ADDED SECOND WORD MOVED *
- *THIS IS DONE (IN GENERAL) FOR THE FIRST 29 LINES BUT *
- *AS EACH CHARACTER IS 8 LINES LOWER THAN THE LAST THE *
- *LAST 8 LINES WOULD BE ADDED TO THEM SELVES AS THE *
- *PREVIOUS CHARACTER WOULD NOT HAVE CLEARED THE SCREEN *
- *WITH ITS OWN CHARACTER. IF YOU CAN UNDERSTAND *
- *THIS BIT THEN YOU HAVE THE KEY TO THE TWIST SCROLL. *
- * TAKE YOUR TIME IT WILL ALL BECOME CLEAR. *
- * THE SCROLL WAS WORKED OUT VERY CAREFULLY ORIGIANLLY *
- *SO THAT WHERE A CHARACTER EXTENDS OVER THE BOTTOM OF *
- *THE BUFFER IT IS DRAWN OVER AT THE TOP. THIS IS DONE *
- *IN THE DBF LOOPS SO YOU'LL HAVE TO STUDY THEM *
- *CAREFULLY TO SEE WHERE. *
- ********************************************************
-
- CONT MOVE.L SCROLLPOINT,A6 GET SCROLL POINTER
- MOVE.L FONTTYPE,A0 GET FONTTYPE
- CLR.L D6
- MOVE.B (A6)+,D6 GET CHARACTER
- SUB.B #32,D6
- MULU #144,D6 GET OFFSET FOR THIS CHARACTER IN FONT
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #32,a0
- MOVE.W #28,D0 DO 29 LINES
- FONTYDRAW add.l #2,a0 THIS IS THE FIRST CHARACTER
- move.w (a0)+,(a1) SO ONLY THE SECOND HALF IS DRAWN
- ADD.L #160,A1 ON THE SCREEN.
- DBF D0,FONTYDRAW
-
- MOVE.L FONTTYPE,A0 AS ABOVE
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- MOVE.W #28,D0 DO 29 LINES
- FONTYDRAW1c MOVE.W (A0)+,D5
- ADD.W D5,(A1) ADD TO SCREEN
- move.w (a0)+,8(a1) MOVE TO SCREEN
- ADD.L #160,A1
- DBF D0,FONTYDRAW1c
- move.w #7,d0 DO ANOTHER 8 LINES
- FONTYDRAW1d MOVE.W (A0)+,(a1) MOVE TO SCREEN
- move.w (a0)+,8(a1) ADD TO SCREEN
- ADD.L #160,A1
- DBF D0,FONTYDRAW1d
-
- ***********************************************
- *CONSTRUCTION OF BUFFER CONTINUES AS ABOVE *
- *WITH APPROPRIATE OFFSETS ETC *
- ***********************************************
-
- MOVE.W #28,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #1288,a1
- FONTYDRAW1 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW1
- move.w #7,d0
- FONTYDRAW1b MOVE.W (A0)+,(a1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW1b
- MOVE.W #28,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #2576,a1
- FONTYDRAW2 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW2
- move.w #7,d0
- FONTYDRAW2b MOVE.W (A0)+,(a1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW2b
-
- MOVE.W #28,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #3864,a1
- FONTYDRAW3 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW3
- move.w #7,d0
- FONTYDRAW3b MOVE.W (A0)+,(a1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW3b
- MOVE.W #28,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #5152,a1
- FONTYDRAW4 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW4
- move.w #7,d0
- FONTYDRAW4b MOVE.W (A0)+,(a1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW4b
- MOVE.W #28,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #6440,a1
- FONTYDRAW5 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW5
- move.w #7,d0
- FONTYDRAW5b MOVE.W (A0)+,(a1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW5b
- MOVE.W #28,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #7728,a1
- FONTYDRAW6 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW6
- move.w #2,d0
- FONTYDRAW6b MOVE.W (A0)+,(a1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW6b
- move.w #4,d0
- FONTYDRAW6c MOVE.W (A0)+,-12800(a1)
- move.w (a0)+,-12792(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW6c
- MOVE.W #23,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #9016,a1
- FONTYDRAW7 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW7
- move.w #4,d0
- FONTYDRAW7c MOVE.W (A0)+,D5
- ADD.W D5,-12800(A1)
- move.w (a0)+,-12792(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW7c
- move.w #7,d0
- FONTYDRAW7b MOVE.W (A0)+,-12800(a1)
- move.w (a0)+,-12792(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW7b
- MOVE.W #15,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #10304,a1
- FONTYDRAW8c MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW8c
- move.w #12,d0
- FONTYDRAW8 MOVE.W (A0)+,D5
- ADD.W D5,-12800(A1)
- move.w (a0)+,-12792(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW8
- move.w #7,d0
- FONTYDRAW8b MOVE.W (A0)+,-12800(a1)
- move.w (a0)+,-12792(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW8b
- MOVE.W #7,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #11592,a1
- FONTYDRAW9 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW9
- move.w #20,d0
- FONTYDRAW9b MOVE.W (A0)+,D5
- add.W D5,-12800(a1)
- move.w (a0)+,-12792(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW9b
- move.w #7,d0
- FONTYDRAW9C MOVE.W (A0)+,-12800(a1)
- move.w (a0)+,-12792(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW9C
- MOVE.W #28,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #80,a1
- FONTYDRAW10 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW10
- move.w #7,d0
- FONTYDRAW10C MOVE.W (A0)+,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW10C
- MOVE.W #28,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #1368,a1
- FONTYDRAW11 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW11
- move.w #7,d0
- FONTYDRAW11b MOVE.W (A0)+,(a1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW11b
- MOVE.W #28,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #2656,a1
- FONTYDRAW12 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW12
- move.w #7,d0
- FONTYDRAW12b MOVE.W (A0)+,(a1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW12b
- MOVE.W #28,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #3944,a1
- FONTYDRAW13 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW13
- move.w #7,d0
- FONTYDRAW13b MOVE.W (A0)+,(a1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW13b
- MOVE.W #28,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #5232,a1
- FONTYDRAW14 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW14
- move.w #7,d0
- FONTYDRAW14b MOVE.W (A0)+,(a1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW14b
- MOVE.W #28,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #6520,a1
- FONTYDRAW15 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW15
- move.w #7,d0
- FONTYDRAW15b MOVE.W (A0)+,(a1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW15b
- MOVE.W #28,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #7808,a1
- FONTYDRAW16 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW16
- move.w #2,d0
- FONTYDRAW16b MOVE.W (A0)+,(a1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW16b
- move.w #4,d0
- FONTYDRAW16c MOVE.W (A0)+,-12800(a1)
- move.w (a0)+,-12792(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW16c
- MOVE.W #23,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #9096,a1
- FONTYDRAW17 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW17
- move.w #4,d0
- FONTYDRAW17c MOVE.W (A0)+,D5
- ADD.W D5,-12800(A1)
- move.w (a0)+,-12792(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW17c
- move.w #7,d0
- FONTYDRAW17b MOVE.W (A0)+,-12800(a1)
- move.w (a0)+,-12792(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW17b
- MOVE.W #15,D0
- MOVE.L FONTTYPE,A0
- CLR.L D6
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #10384,a1
- FONTYDRAW18 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- move.w (a0)+,8(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW18
- move.w #12,d0
- FONTYDRAW18c MOVE.W (A0)+,D5
- ADD.W D5,-12800(A1)
- move.w (a0)+,-12792(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW18c
- move.w #7,d0
- FONTYDRAW18b MOVE.W (A0)+,-12800(a1)
- move.w (a0)+,-12792(a1)
- ADD.L #160,A1
- DBF D0,FONTYDRAW18b
-
- MOVE.W #7,D0 THE LAST CHARACTER IS ADDED
- MOVE.L FONTTYPE,A0 ONLY TO THE FIRST WORD
- CLR.L D6 THE SECOND IS DISCARDED.
- MOVE.B (A6)+,D6
- SUB.B #32,D6
- MULU #144,D6
- ADD.L D6,A0
- MOVE.L SCREEN,A1
- add.l #11672,a1
- FONTYDRAW19 MOVE.W (A0)+,D5
- ADD.W D5,(A1)
- add.l #2,a0
- ADD.L #160,A1
- DBF D0,FONTYDRAW19
- move.w #20,d0
- FONTYDRAW19c MOVE.W (A0)+,D5
- ADD.W D5,-12800(A1)
- add.l #2,a0
- ADD.L #160,A1
- DBF D0,FONTYDRAW19c
- move.w #7,d0
- FONTYDRAW19b MOVE.W (A0)+,-12800(a1)
- add.l #2,a0
- ADD.L #160,A1
- DBF D0,FONTYDRAW19b
- BSR CONSTRUCT
- BRA VBLOOP
- *******************************************
- *NOW THIS IS WHERE THE SCROLL IS ACTUALLY *
- *CONSTRUCTED. THIS IS DONE BY COPYING THE *
- *THE BUFFER TO THE SCREEN ONCE THE RIGHT *
- *WAY UP IN PLANE 1 THEN UPSIDE DOWN AND *
- *IN PLANE 2 TO THE SCREEN. A TABLE TELLS *
- *THE ROUTINE HOW MANY TIMES TO DISPLAY *
- *EACH LINE OF THE BUFFER. BY MISSING OR *
- *OR DISPLAYING SOME LINES TWICE IT IS EASY*
- *TO GIVE THE APPEARANCE OF WRAPPING THE *
- *SCROLL AROUND A BAR. *
- *******************************************
-
- CONSTRUCT MOVE.L SCREEN,A1
- MOVE.L A1,A0
- ADD.L #16000,A1 START SCROLL 100 LINES DOWN SCREEN
- MOVE.L A1,A3
- ADD.L #10722,A3 START THE UPSIDE DOWN BIT FURTHER DOWN AND IN PLANE2
- MOVE.L #ADDTAB,A2 THE ADDTABLE (FOR CONTROLLING THE DRAWING OF SCROLL)
- MOVE.W #67,D0 DO 68 LINES
- CONLOOP MOVE.W (A0),(A1) COPY BUFFER TO SCREEN
- MOVE.W 8(A0),8(A1)
- MOVE.W 16(A0),16(A1)
- MOVE.W 24(A0),24(A1)
- MOVE.W 32(A0),32(A1)
- MOVE.W 40(A0),40(A1)
- MOVE.W 48(A0),48(A1)
- MOVE.W 56(A0),56(A1)
- MOVE.W 64(A0),64(A1)
- MOVE.W 72(A0),72(A1)
- MOVE.W 80(A0),80(A1)
- MOVE.W 88(A0),88(A1)
- MOVE.W 96(A0),96(A1)
- MOVE.W 104(A0),104(A1)
- MOVE.W 112(A0),112(A1)
- MOVE.W 120(A0),120(A1)
- MOVE.W 128(A0),128(A1)
- MOVE.W 136(A0),136(A1)
- MOVE.W 144(A0),144(A1)
- MOVE.W 152(A0),152(A1)
- MOVE.W (A0),(A3) MOVE BUFFER TO PLANE 2
- MOVE.W 8(A0),8(A3)
- MOVE.W 16(A0),16(A3)
- MOVE.W 24(A0),24(A3)
- MOVE.W 32(A0),32(A3)
- MOVE.W 40(A0),40(A3)
- MOVE.W 48(A0),48(A3)
- MOVE.W 56(A0),56(A3)
- MOVE.W 64(A0),64(A3)
- MOVE.W 72(A0),72(A3)
- MOVE.W 80(A0),80(A3)
- MOVE.W 88(A0),88(A3)
- MOVE.W 96(A0),96(A3)
- MOVE.W 104(A0),104(A3)
- MOVE.W 112(A0),112(A3)
- MOVE.W 120(A0),120(A3)
- MOVE.W 128(A0),128(A3)
- MOVE.W 136(A0),136(A3)
- MOVE.W 144(A0),144(A3)
- MOVE.W 152(A0),152(A3)
-
- ADD.L #160,A1 ADD ONE LINE TO FIRST POINTER
- SUB.L #160,A3 SUB ONE LINE FROM SECOND POINTER
- MOVE.W (A2)+,D1 TAKE VALUE FROM ADD TABLE FOR HOW
- ADD.W D1,A0 MANY LINES TO ADVANCE THROUGH BUFFER
- DBF D0,CONLOOP
- RTS
- ****************************************
- *THE EXIT ROUTINE. IF YOU'VE FINISHED *
- *GAWPING AT OUR AMAZING SCROLL THEN YOU*
- *ARE FREE TO LEAVE!!!!!!!!!!!!!!!!!!!! *
- ****************************************
-
- TWISTEND
- MOVE.L #$7770000,$FF8240 RESET SOME COLORS
- MOVE.L #$0,$FF8244
- MOVE.L oldssp,-(SP) BACK TO USER MODE
- MOVE.W #$20,-(SP)
- TRAP #1
- ADD.L #6,SP
- MOVE.W #-1,-(SP) RESET SCREEN POINTER
- MOVE.L SAVESCREEN,-(SP)
- MOVE.L SAVESCREEN,-(SP)
- MOVE.W #5,-(SP)
- TRAP #14
- ADD.L #12,SP
- CLR.W -(SP) GOOD BYE CRUEL WORLD!!!
- TRAP #1 AAAARRGHHHHHHH!!!!!!!
-
- ************************************
- *THE TABLE FOR WRAPPING THE SCROLL *
- *AROUND THE IMAGINARY BAR. NUMBERS *
- *CORRESPOND TO NUMBERS OF BYTES IN *
- *THE BUFFER, 160= 1 LINE,320= 2LINE*
- ************************************
-
- ADDTAB DC.W 800,640,480,320,320,320,320,160,320,160,320,160,160,160,0,160,160,0
- DC.W 160,160,0,160,160,0,160,0,160,0,160,0,160,0,160,0
- DC.W 0,160,0,160,0,160,0,160,0,160,0,160,160,0,160,160
- DC.W 0,160,160,0,160,160,160,320,160,320,160,320,320,320,480,320,640,800
- oldssp dc.l 0
- SAVESCREEN DC.L 0
- FONTTYPE DC.L FONT1
- SCREEN1 DC.L 0 THE TWO SCREENS
- SCREEN DC.L 0
- SWITCH DC.W 0
- SCROLLPOINT DC.L SCROLLINE POINTER TO SCROLLINE
- TEXT DC.B $1B,$45,0,0 TEXT FOR CLEARING SCREEN
-
- ************************************
- *THESE ROUTINES ARE FOR MAKING THE *
- *SPECIAL FONTS WHICH THIS SCROLL *
- *USES TO MAKE THE DIAGONAL SCROLL *
- *EACH COPY OF THE ORIGINAL FONT IS *
- *SHIFTED LEFT BY 2 PIXELS AND *
- *MOVED UP BY ONE FROM THE PREVIOUS*
- *THUS WHEN ALL 8 COPIES ARE ANIMATED*
- *THEY APPEAR TO MOVE DIAGONALLY *
- ************************************
-
- MAKEFONTS
- LEA MAINFONT,A0 TAKE ORIGINAL FONT
- LEA FONT1,A1 FIRST COPY
- MOVE.W #32,D0 START 8 LINES IN TO CHAR
- move.w #0,d4 SHIFT LEFT BY 1 PIXEL
- BSR MOVEFONT
- LEA MAINFONT,A0 TAKE ORIGINAL FONT
- LEA FONT2,A1 SECOND COPY
- MOVE.W #28,D0 START 7 LINES IN TO CHAR
- move.w #2,d4 SHIFT LEFT BY 3 PIXELS
- BSR MOVEFONT
- LEA MAINFONT,A0 TAKE ORIGINAL FONT
- LEA FONT3,A1 THIRD COPY
- MOVE.W #24,D0 START 6 LINE S IN TO CHAR
- move.w #4,d4 SHIFT LEFT BY 5 PIXELS
- BSR MOVEFONT
- LEA MAINFONT,A0 ETC
- LEA FONT4,A1
- MOVE.W #20,D0 ETC
- move.w #6,d4
- BSR MOVEFONT
- LEA MAINFONT,A0
- LEA FONT5,A1
- MOVE.W #16,D0
- move.w #8,d4
- BSR MOVEFONT
- LEA MAINFONT,A0
- LEA FONT6,A1
- MOVE.W #12,D0
- move.w #10,d4
- BSR MOVEFONT
- LEA MAINFONT,A0
- LEA FONT7,A1
- MOVE.W #8,D0
- move.w #12,d4
- BSR MOVEFONT
- LEA MAINFONT,A0 TAKE ORIGINAL FONT
- LEA FONT8,A1 EIGTH COPY
- MOVE.W #4,D0 START ON 2ND LINE
- move.w #14,d4 SHIFT LEFT BY 15 PIXELS
- BSR MOVEFONT
- RTS
- MOVEFONT MOVE.W #59,D1 60 CHARACTERS
- COPYFONT MOVE.L A1,A2 FIRST MOVE FONT TO COPY
- ADD.w D0,A2 ADD LINE OFFSET
- MOVE.W #35,D3 36 LINES HIGH
- MOVE.L A2,A3
- COPYFONT2 CLR.W (A2)+ BLANK 1 WORD
- MOVE.W (A0)+,(A2)+ MOVE FONT TO 2ND WORD
- DBF D3,COPYFONT2 LOOP
- MOVE.W D4,D5 MOVE AMOUNT TO SHIFT TO D5
- COPYFONT3
- MOVE.L A3,A4
- MOVE.W #35,D3 NOW SHIFT FONT OVER (36 LINES)
- COPYFONT4 LSL.W 2(A4) SHIFT 1ST WORD
- ROXL.W (A4) 2ND WORD TAKING SHIFTED BIT FROM FIRST
- ADD.L #4,A4
- DBF D3,COPYFONT4
- DBF D5,COPYFONT3
- ADD.L #144,A1
- DBF D1,COPYFONT
- RTS
-
- *******************************************
- *WELL THIS IS WHER YOU CAN TYPE ALL THAT *
- *SPONTANEOUS BULLSHIT THAT COMES TO THE *
- *MINDS OF SCROLLINE WRITERS... *
- *SCROLL IS TERMINATED BY $FF BUT THER MUST*
- *BE 20 ODD BLANK CHARACTERS AFTER THIS *
- *SO THAT SPURIOUS DATA IS NOT DISPLAYED *
- *******************************************
-
- SCROLLINE dc.b " "
- DC.B " HI THERE, MANIKIN OF THE LOST BOYS HERE ON THE TWIST SCROLL. THE LOST BOYS ARE AN ESTABLISHED DEMO CREW FROM"
- DC.B " ENGLAND AND THIS SCROLL IS FROM OUR NEWEST DEMO ON THE ST, THE DEFINITIVE DEMO. COPIES AVAILABLE FROM THE BEST"
- DC.B " PD LIBRARIES OR FROM THE ADDRESS IN THIS SOURCE CODE. FOR THE PRICE OF 5 POUNDS, COMPLETE SOURCE CODE FOR THE DEF"
- DC.B " DEMO ALSO AVAILABLE FOR 25 POUNDS AGAIN FROM THIS ADDRESS. "
- DC.B " ",$ff
- EVEN
-
- ********************************************
- *THE FONT IS MADE UP OFF 1 PLANE CHARACTERS*
- *WHICH ARE 36 LINES HIGH AND 1 WORD WIDE *
- *THE BOTTOM 8 LINES MUST BE BLANK TO ALLOW *
- *FOR THE SPECIAL FORMAT OF CHARACTERS!! *
- *TO MAKE A FONT DRAW ASERIES OF CHARACTERS *
- *15 PIXELS WIDE (1 BLANK FOR SPACE BETWEEN *
- *LETTERS) AND 28 LINES HIGH. YOU COULD DRAW*
- *THEM WITH A SLANT LIKE I DID TO IMPROVE *
- *THE DIAGONAL EFFECT. *
- ********************************************
-
- MAINFONT INCBIN "TWIST.DAT"
-
- ********************************************
- *THE INCBIN INSTRUCTION IS USED BY GENST *
- *TO INCLUDE A BINARY FILE INTO AN ASSEMBLED*
- *FILE. IF THE ASSEMBLER YOU USE DOES NOT *
- *HAVE THIS INSTRUCTION THEN EITHER CONVERT *
- *THE TWIST.DAT FILE INTO DC.W STATEMENTS OR*
- *ADD AN ADDITIONAL PIECE OF CODE TO LOAD *
- *THE FILE TO THIS PIECE OF THE PROGRAM. *
- ********************************************
-
- FONT1
- FONT2 EQU FONT1+8640
- FONT3 EQU FONT2+8640
- FONT4 EQU FONT3+8640
- FONT5 EQU FONT4+8640
- FONT6 EQU FONT5+8640
- FONT7 EQU FONT6+8640
- FONT8 EQU FONT7+8640
- FONTEND EQU FONT8+8640
-