Вот текст Демки:
Код:
; pl0.com
; Draws player above working DOS screen
.ou pl0.com
; ====================
; Z-page Variables
zppy = $cc ; Z-page pointer for y
zppx = $ce ; Z-page pointer for x
xini = $d0 ; initial x value
yini = $d1 ; initial y value
; --------------------
; Included LIBS
.in syseq.mae
.in pmgeq.mae
.in macro.mae
; --------------------
; Variables
stotop = $100 ; storage (adress)
; ====================
; Main PROG
.or $0600
start
; --------------------
; Bump Down RAMTOP
mab RAMTOP stotop ; Save old RAMTOP
sec
sbc #$08
sta RAMTOP ; Set new RAMTOP
sta PMBASE ; Tell ANTIC
sta 1+zppx ; for erase SUBR
mib 0 zppx
; --------------------
; Reset GR mode immediately
ofs 6
bfa sname
lda GRMODE
jsr setgr
; --------------------
; Init player/missile graphics
mib 126 xini
mib 128 yini
mib $3a SDMCTL ; Set SLR,PLDMA=on
; --------------------
; Clear out pm area of ram
ldy #0 ; Reverse counter
erase
lda #0 ; Eraser byte
sta (zppx),y
dey ; 255->0 counter
bne erase ; Wait for 0 in counter
inc 1+zppx ; Set next page
lda 1+zppx ; Here checks are we done?
cmp stotop ; Are we on old RAMTOP?
beq erase ; Yes! Clear it from 255->0
bcc erase ; No! Continue...
; --------------------
; Calculate y position
lda RAMTOP
clc
adc #4 ; Go to P0 page in SLR
sta 1+zppy ; Set up P0 area
mab yini zppy ; y-pos = offset from P0
; Draw shape
ldy #0 ; Normal counter
draw
lda shape,y ; get byte of shape
sta (zppy),y ; put it in place
iny
cpy #shlen
bne draw
mab xini HPOSP0
sta zppx
mib $0e PCOLR0 ; Not Utilized!
; Color needed to be refreshed every VBI!
mib $02 GRACTL
;
rts ; Return to DOS
; ====================
; Used Subroutines
; --------------------
; Set Up Graphics Mode
setgr
pha ; Mode
jsr close
pla
tay ; Y=Opt (AUX1)
and #16+32 ; TXTWIN+NoClear
eor #16 ; flip TXTWIN
ora #OPUPD ; Open rw
jmp open
; --------------------
; Included SUBS
.in iolib.mae
; Needed data
sname .by "S:",$9b
shape .by %10000000
.by %01100000
.by %01111000
.by %00111110
.by %00111100
.by %00011100
.by %00010010
.by %00000001
shlen = *-shape-1
; ====================
; Setup Run Address
.or RUNAD
.wo start
;
.en
; >>> End Of File <<< ;
А во вложении образ диска Атари с MAE Macroassembler и моими библиотеками. 
MAE Assembler SpDOSx33a 360.zip
А вот и рисуночек:

- - - Добавлено - - -

Сообщение от
Шынни
Ваши речи иногда зажигательны
Хочется писать интересно даже о структуре веника...
И моё занудство можно рассматривать (при перенормировке координат) как лаконичность, только наоборот. 
Меня всегда удручало то, что во всех руководствах про PMG специально скрыты его корни.
Даются либо общие правила "ходи туда, клади что взял", либо описываются сверхподробные шажки, абсолютно несистемные, а их же куча!
В общем, PMG - это непросто.