home *** CD-ROM | disk | FTP | other *** search
/ Mega Magazine 7 / Mega_Magazine_07_19xx___nl_Disk_2_of_2_Side_B.atr / horbig.arc / HBVBL.ASM < prev    next >
Assembly Source File  |  1985-10-07  |  7KB  |  1 lines

  1. ; ENABLE VBI¢                    ; ¢     LDA #0         ; RESET CLOCK¢     STA 18         ; TIMERS¢     STA 19¢     STA 20¢     LDA #6¢     LDY #VBI&255¢     LDX #VBI/256¢     JMP $E45C¢VBI¢; SAVE REGISTERS¢     PHA¢     TYA¢     PHA¢     TXA¢     PHA¢¢     LDA 20         ; CHECK TO SEE¢     AND #7         ; IF COLOURS¢     BNE NOUPDAT    ; SHOULD BE UPDATED¢     LDA UPDAT¢     CLC¢     ADC #16¢     STA UPDAT¢NOUPDAT¢     LDA #1         ; SET SIZES FOR PM¢     STA $D008¢     STA $D009¢     STA $D00A¢     STA $D00B¢¢     LDA #100       ; PUT IT ON THE¢     STA $D000      ; MIDDLE OF THE¢     CLC            ; SCREEN (WELL,¢     ADC #16        ; APPROX. ANYWAY)¢     STA $D001¢     ADC #16¢     STA $D002¢     ADC #16¢     STA $D003¢¢     DEC WCOL       ; COLOUR EFFECT¢     BNE COLNO¢     LDA #4¢     STA WCOL¢     LDA 704¢     PHA¢     LDA 705¢     STA 704¢     LDA 706¢     STA 705¢     LDA 707¢     STA 706¢     PLA¢     STA 707¢COLNO¢     LDA #47        ; SET WIDE AND¢     STA $D400      ; DOUBLE RES.¢     STA 559¢¢     LDA DIDIT      ; CHECK TO SEE¢     BEQ DOVBIG     ; IF SCROLLER¢     JMP NOVBIG     ; SHOULD START¢DOVBIG¢     LDX BYT1       ; IS CHARACTER¢     CPX #8         ; COMPLETED YET ?¢     BNE FINTHIS    ; NO, THEN DO SO¢     LDY #0         ; RESET COUNTER¢     STY BYT1       ; AND FIND THE¢     LDA ($80),Y    ; NEXT CHARACTER¢     CMP #$9B       ; IS IT THE END ?¢     BNE SKRESPM    ; NO...¢     LDA #VSCR&255  ; RESET SCROLLER¢     STA $80¢     LDA #VSCR/256¢     STA $81¢     LDA ($80),Y    ; NOW LETS DO SOME¢SKRESPM             ; CALCULATING¢     STA $82        ; TO FIND THE ¢     STY $83        ; RIGHT DATA FOR¢     ASL $82        ; THE CHARACTER¢     ROL $83        ; CHARACTER * 8¢     ASL $82¢     ROL $83¢     ASL $82¢     ROL $83¢     LDA $83¢     CLC¢     ADC #$AA       ; AND ADD THE¢     STA $83        ; ADDRESS OF FONT¢¢     INC $80        ; INCREASE POINTER¢     BNE FINTHIS    ; FOR STRING¢     INC $81¢FINTHIS¢     LDY BYT1       ; NOW FINISH¢                    ; ANOTHER BYTE¢     LDA #0         ; PUT BLANKS AT¢     STA PMA+512+94 ; THE END OF PM¢     STA PMA+640+94¢     STA PMA+768+94¢     STA PMA+896+94¢¢     LDA ($82),Y    ; LOAD IT FROM¢     EOR #255       ; FONT¢¢     STA DIST       ; NOW LET'S ENLARGE¢     ROL DIST       ; IT, AND USE¢     BCS NONO1      ; 2 BITS IN EACH¢     LDA #240       ; PM¢     STA PMA+512+94¢NONO1¢     ROL DIST¢     BCS NONO2¢     LDA PMA+512+94¢     ORA #15¢     STA PMA+512+94¢NONO2¢     ROL DIST¢     BCS NONO3¢     LDA #240¢     STA PMA+640+94¢NONO3¢     ROL DIST¢     BCS NONO4¢     LDA PMA+640+94¢     ORA #15¢     STA PMA+640+94¢NONO4¢     ROL DIST¢     BCS NONO5¢     LDA #240¢     STA PMA+768+94¢NONO5¢     ROL DIST¢     BCS NONO6¢     LDA PMA+768+94¢     ORA #15¢     STA PMA+768+94¢NONO6¢     ROL DIST¢     BCS NONO7¢     LDA #240¢     STA PMA+896+94¢NONO7¢     ROL DIST¢     BCS NONO8¢     LDA PMA+896+94¢     ORA #15¢     STA PMA+896+94¢NONO8¢     DEC BYT1+1     ; HAS IT SCROLLED¢     BNE WAIT1      ; BY YET ?¢     LDA #8¢     STA BYT1+1¢     INC BYT1¢WAIT1¢; NOW MOVE THE PM'S UP¢     LDY #8¢HOLDVB¢     INY¢     LDA PMA+512,Y¢     DEY¢     STA PMA+512,Y¢     INY¢     LDA PMA+640,Y¢     DEY¢     STA PMA+640,Y¢     INY¢     LDA PMA+768,Y¢     DEY¢     STA PMA+768,Y¢     INY¢     LDA PMA+896,Y¢     DEY¢     STA PMA+896,Y¢     INY¢     CPY #94¢     BNE HOLDVB¢NOVBIG¢     LDA VPOS       ; WOW, CAN'T¢     AND #15        ; REMEMBER IF THIS¢     EOR #15        ; IS NEEDED OR NOT¢     STA MPOS       ; SO I LEFT IT¢¢     LDA 20¢     AND #1¢     BNE NIC1¢     INC CNTR¢NIC1¢¢     LDA CNTR+1¢     CLC¢     ADC #16¢     STA CNTR+1¢¢     LDA #0¢     STA 77         ; ATTRACT OFF¢     STA DLN        ; RESET DL COUNTER¢¢;UPDATE SCROLL MESSAGES 1 AND 2¢     LDA DIDIT+1    ; START NOW ?¢     BNE SDL1       ; NO, WAIT A BIT¢     LDA HPOS       ; DO SCROLLER¢     SEC            ; AT SPEED OF 2¢     SBC #2¢     STA HPOS¢     BCS SDL1¢     AND #7¢     STA HPOS¢     LDA BOT+1      ; CHECK IF END OF¢     STA $D5        ; SCROLL IS REACHED¢     LDA BOT+2¢     STA $D6¢     LDY #25¢     LDA ($D5),Y¢     CMP #255       ; NO, IT HAS NOT¢     BNE CS1¢     LDA #SC1&255   ; RESET IT¢     STA BOT+1¢     LDA #SC1/256¢     STA BOT+2¢     LDA #0         ; START NEXT SCROLL¢     STA DIDIT+2¢CS1¢     INC BOT+1¢     BNE SDL1¢     INC BOT+2¢SDL1¢¢     LDA DIDIT+2    ; SAME AS ABOVE¢     BNE SDL2       ; WELL, ALMOST¢     DEC HPOS+2¢     BNE SDL2¢     LDA #8¢     STA HPOS+2¢     LDA TOP+1¢     STA $D5¢     LDA TOP+2¢     STA $D6¢     LDY #25¢     LDA ($D5),Y¢     CMP #255¢     BNE CS2¢     LDA #SC2&255¢     STA TOP+1¢     LDA #SC2/256¢     STA TOP+2¢     LDA #0¢     STA DIDIT¢CS2¢     INC TOP+1¢     BNE SDL2¢     INC TOP+2¢SDL2¢¢     LDA DIDIT+3    ; SHOULD BIG SCROLL¢     BEQ DOHP3      ; START ?¢¢     LDA 19         ; NO, LET'S WAIT¢     CMP #3         ; FOR TIMER 19¢     BNE SDL3¢     LDA #0         ; NOW IT IS TIME¢     STA DIDIT+3    ; TO START¢DOHP3¢     LDA HPOS+1     ; MOVE AT SPEED¢     SEC            ; 3.¢     SBC #3¢     STA HPOS+1¢     BCS SDL3¢     AND #3¢     STA HPOS+1¢¢     LDA MODE+25    ; UPDATE THE TOP¢     STA $D5        ; OF BIGSCROLL¢     LDA MODE+26    ; AND CHECK¢     STA $D6¢     LDY #48+6¢     LDA ($D5),Y¢     CMP #255       ; IF SCREEN HAS¢     BNE CS3        ; SCROLLED TWO¢     LDA #SHOW&255  ; SCREENS, RESET IT¢     STA MODE+1¢     LDA #SHOW/256¢     STA MODE+2¢CS3  LDA TOGGL      ; COPY CHAR EVERY¢     EOR #255       ; OTHER VBL¢     STA TOGGL¢     BEQ CS03¢¢     JSR COPYCHAR¢CS03¢     INC MODE+1¢     BNE NOMH1¢     INC MODE+2¢NOMH1¢     LDY #3¢MIDSCR¢     DEY            ; LET US MAKE¢     DEY            ; THE REST OF THE¢     LDA MODE,Y     ; LINES FOLLOW¢     CLC            ; THE TOP ONE¢     ADC #96¢     INY¢     INY¢     INY¢     STA MODE,Y¢     DEY¢     DEY¢     LDA MODE,Y¢     ADC #0¢     INY¢     INY¢     INY¢     STA MODE,Y¢     INY¢     CPY #9*3¢     BNE MIDSCR¢SDL3¢     LDY VPOS       ; UPDATE VERTICAL¢     LDA VTAB,Y     ; JUMP IN TABLE¢     CMP #255       ; START AGAIN¢     BNE NVRES      ; IF END REACHED¢     LDY #0¢     STY VPOS¢     LDA VTAB,Y¢NVRES¢     STA $D405¢     INC VPOS¢; RESTORE REGISTERS AND EXIT¢EXITVBL¢     PLA¢     TAX¢     PLA¢     TAY¢     PLA¢     JMP $E45F¢COPYCHAR¢     LDA BYTE       ; IS THE CHAR¢     BNE NONYET     ; BEEN DONE YET ?¢     LDA #8         ; GET A NEW ONE¢     STA BYTE¢     LDY #0¢     LDA ($CB),Y    ; IS SCROLLER¢     CMP #$9B       ; FINISHED¢     BNE NRESBIG¢     LDA #0         ; RESET SCROLLER¢     STA DIDIT+1¢     LDA #BSCR&255¢     STA $CB¢     LDA #BSCR/256¢     STA $CC¢     LDA ($CB),Y¢NRESBIG¢     STY $D6        ; SAME AS VERTICAL¢     STA $D5        ; SCROLLER ABOVE¢     ASL $D5¢     ROL $D6¢     ASL $D5¢     ROL $D6¢     ASL $D5¢     ROL $D6¢     LDA $D6¢     CLC¢     ADC #$A4¢     STA $D6¢DO8STK¢     LDA ($D5),Y    ; NOW COPY 8 BITS¢     STA TDAT,Y¢     INY¢     CPY #8¢     BNE DO8STK¢¢     INC $CB¢     BNE NONYET¢     INC $CC¢¢NONYET¢     LDX #3         ; UPDATE AT THE¢     LDY #0         ; END OF THE¢     STY YCNT       ; SCREEN¢DO8B¢     INX¢     LDA MODE,X¢     STA $D5¢     INX¢     LDA MODE,X¢     STA $D6¢     LDY YCNT¢¢     LDA TDAT,Y¢     ROL A¢     STA TDAT,Y¢     BCC NNN1¢     LDA #0¢     STA TM1¢     BEQ NNN2¢NNN1¢     LDA #1¢     STA TM1¢NNN2¢     LDY #48¢     LDA TM1¢     STA ($D5),Y¢     INY¢     STA ($D5),Y¢     LDY #0¢     STA ($D5),Y¢     INY¢     STA ($D5),Y¢     INC YCNT¢     INX¢     CPX #27¢     BNE DO8B¢¢     DEC BYTE¢     RTS¢