Jump to content
IGNORED

Why appears here "hello world" 2x.


Recommended Posts

Hi good afternoon.


Why appears here "hello world" 2x.


Thank you.

greeting





PROCESSOR 6502
INCLUDE "vcs.h"

ORG $F000 ; Start of "cart area" (see Atari memory map)

StartFrame:
lda #%00000010 ; Vertical sync is signaled by VSYNC's bit 1...
sta VSYNC
REPEAT 3 ; ...and lasts 3 scanlines
sta WSYNC ; (WSYNC write => wait for end of scanline)
REPEND
lda #0
sta VSYNC ; Signal vertical sync by clearing the bit

PreparePlayfield: ; We'll use the first VBLANK scanline for setup
lda #124
sta COLUBK ; Background color
lda #0
lda #$1f ; Playfield collor
sta COLUPF

ldx #0 ; X will count visible scanlines, let's reset it
REPEAT 37 ; Wait until this (and the other 36) vertical blank
sta WSYNC ; scanlines are finished
REPEND
lda #0 ; Vertical blank is done, we can "turn on" the beam
sta VBLANK

Scanline:
cpx #174 ; "HELLO WORLD" = (11 chars x 8 lines - 1) x 2 scanlines =
bcs ScanlineEnd ; 174 (0 to 173). After that, skip drawing code
txa ; We want each byte of the hello world phrase on 2 scanlines,
lsr ; which means Y (bitmap counter) = X (scanline counter) / 2.
tay ; For division by two we use (A-only) right-shift
lda Phrase,y ; "Phrase,Y" = mem(Phrase+Y) (Y-th address after Phrase)
sta PF1 ; Put the value on PF bits 4-11 (0-3 is PF0, 12-15 is PF2)
ScanlineEnd:
sta WSYNC ; Wait for scanline end
inx ; Increase counter; repeat untill we got all kernel scanlines
cpx #191
bne Scanline

Overscan:
lda #%01000010 ; "turn off" the beam again...
sta VBLANK ;
REPEAT 30 ; ...for 30 overscan scanlines...
sta WSYNC
REPEND
jmp StartFrame ; ...and start it over!

Phrase:
.BYTE %00000000 ; H
.BYTE %01000010
.BYTE %01111110
.BYTE %01000010
.BYTE %01000010
.BYTE %01000010
.BYTE %00000000
.BYTE %00000000 ; E
.BYTE %01111110
.BYTE %01000000
.BYTE %01111100
.BYTE %01000000
.BYTE %01000000
.BYTE %01111110
.BYTE %00000000
.BYTE %00000000 ; L
.BYTE %01000000
.BYTE %01000000
.BYTE %01000000
.BYTE %01000000
.BYTE %01000000
.BYTE %01111110
.BYTE %00000000
.BYTE %00000000 ; L
.BYTE %01000000
.BYTE %01000000
.BYTE %01000000
.BYTE %01000000
.BYTE %01000000
.BYTE %01111110
.BYTE %00000000 ; O
.BYTE %00000000
.BYTE %00111100
.BYTE %01000010
.BYTE %01000010
.BYTE %01000010
.BYTE %01000010
.BYTE %00111100
.BYTE %00000000
.BYTE %00000000 ; white space
.BYTE %00000000
.BYTE %00000000
.BYTE %00000000
.BYTE %00000000
.BYTE %00000000
.BYTE %00000000
.BYTE %00000000
.BYTE %00000000 ; W
.BYTE %01000010
.BYTE %01000010
.BYTE %01000010
.BYTE %01000010
.BYTE %01011010
.BYTE %00100100
.BYTE %00000000
.BYTE %00000000 ; O
.BYTE %00111100
.BYTE %01000010
.BYTE %01000010
.BYTE %01000010
.BYTE %01000010
.BYTE %00111100
.BYTE %00000000
.BYTE %00000000 ; R
.BYTE %01111100
.BYTE %01000010
.BYTE %01000010
.BYTE %01111100
.BYTE %01000100
.BYTE %01000010
.BYTE %00000000
.BYTE %00000000 ; L
.BYTE %01000000
.BYTE %01000000
.BYTE %01000000
.BYTE %01000000
.BYTE %01000000
.BYTE %01111110
.BYTE %00000000
.BYTE %00000000 ; D
.BYTE %01111000
.BYTE %01000100
.BYTE %01000010
.BYTE %01000010
.BYTE %01000100
.BYTE %01111000
.BYTE %00000000 ; Last byte written to PF1 (important, ensures lower tip
; of letter "D" won't "bleeed")

ORG $FFFA ; Cart config (so 6502 can start it up)

.WORD StartFrame ; NMI
.WORD StartFrame ; RESET
.WORD StartFrame ; IRQ

END

post-31221-0-43614600-1490439058_thumb.jpg

Edited by funkheld
Link to comment
Share on other sites

As designed, Atari will either repeat or reflect the left half of the playfield graphics on the right side. In this case, you are repeating the left side. Try storing a #1 to register CTRLPF and you will see your words reflected on the right half.

 

Note: many programs avoid repeating or reflecting the play field by changing those graphics registers with precise timing- after the beam has passed the left side but not yet reached the right side.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...