Ad: Click Here

Digital Antic PROGRAM LISTING: 84-11/WINDOWS2.ASM

0100 ; WINDOWS
0110 ; BY DAVE CULBERTSON
0120 ; ANTIC MAGAZINE
0130 ; ═еяуатес═
0140 SCRN =  $CB     ;Beg Adr of window
0150 ASTR =  $CD     ;Adr of data string
0160 OFFS =  $0600   ;Offset into screen
0170 ; (upper left corner of box)
0180 ; ═елемент═сегмент═спец╖с═
0190 ELEM =  $CF     ;# of elements
0200 ELEW =  $D1     ;Element width
0210 ELEO =  $0602   ;Element offset
0220 ; (Upper left corner of element)
0230 ;
0240     *=  $0600   ; RELOCATABLE
0250     PLA         ;Get # OF Prams off stack
0260 ; ═гет═аддресс═оф═дата═стринг═
0270     PLA 
0280     STA ASTR+1
0290     PLA 
0300     STA ASTR
0310 ; ═гет═оффсет═фром═бег═оф═сцреен═
0320     PLA 
0330     STA OFFS+1
0340     PLA 
0350     STA OFFS
0360 ; ═гет═ё═оф═елементс═фор═виндов═
0370     PLA 
0380     STA ELEM+1
0390     PLA 
0400     STA ELEM
0410 ; ═гет═елемент═видтх═
0420     PLA 
0430     PLA 
0440     STA ELEW
0450 ; ═гет═елемент═оффсет═
0460     PLA 
0470     STA ELEO+1
0480     PLA 
0490     STA ELEO
0500 ; ═инитиал═сет╜уп═
0510     LDA $58     ;Adr OF S.M. (Lo)
0520     STA SCRN
0530     LDA $59     ;Adr of S.M. (Hi)
0540     STA SCRN+1
0550 ; ═адд═оффсет═то═сцрн═жалуе═
0560 ;Initially this routine sets-up
0570 ;the upper left corner of the
0580 ;window.
0590 B0  CLC 
0600     LDA SCRN
0610     ADC OFFS
0620     STA SCRN
0630     LDA SCRN+1
0640     ADC OFFS+1
0650     STA SCRN+1
0660 ; ═свап═сцреен═╕═стринг═
0670 C1  LDY #0      ;Width Counter
0680 C2  LDA (SCRN),Y
0690     TAX 
0700     LDA (ASTR),Y
0710     STA (SCRN),Y
0720     TXA 
0730     STA (ASTR),Y
0740     INY 
0750     CPY ELEW
0760     BNE C2
0770 ; ═цхецк═фор═анотхер═елемент═
0780     LDA #0      ;Check Lo Byte.
0790     DEC ELEM    ;Sub 1.
0800     CMP ELEM    ;Is it zero?
0810     BNE C3      ;No then C3.
0820     CMP ELEM+1  ;Is Hi byte zero?
0830     BEQ EX      ;Yes - exit.
0840     DEC ELEM+1  ;No then sub 1.
0850 ;═индеь═стринг═фор═неьт═елемент═
0860 C3  CLC 
0870     TYA         ;Add index to
0880     ADC ASTR    ;string pointer.
0890     STA ASTR
0900     BCC D0
0910     INC ASTR+1
0920 ;═упдате═сцреен═поинтер═
0930     CLC 
0940 D0  LDA SCRN    ;  Then Add
0950     ADC ELEO
0960     STA SCRN    ;  ELEO to SCRN
0970     LDA SCRN+1
0980     ADC ELEO+1
0990     STA SCRN+1
1000     CLC         ;Go do next Element.
1010     BCC C1
1020 ;═алл═доне═ретурн═то═басиц═
1030 EX  RTS 

Back to previous page