Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.
Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.
.proc zrob_cos
...kod...
rts
zmienna_lokalna_byte .byte 0
zmienna_lokalna_word .ds 2
.endp
.struct @ZP
local1 .byte
local_ptr1 .word
local_ptr2 .word
.ends
;;; Define segment
ZP_START = $80
.segdef seg_zp ZP_START $100-ZP_START
CODE_START = $2000
BANK_ADDRESS = $4000
.segdef seg_first CODE_START BANK_ADDRESS-CODE_START
;;; Put data into segment
.segment seg_zp
.var zp @ZP
.endseg
.segment seg_first
DATA_SIZE = 64
data .ds DATA_SIZE
.proc copy_data (.word src_ptr .word dst_ptr .byte size) .var
; set local variables
size = zp.local1
src_ptr = zp.local_ptr1
dst_ptr = zp.local_ptr2
ldy #0
copy_loop:
lda (src_ptr),y
sta (dst_ptr),y
iny
cpy size
bne copy_loop
rts
.endp
main:
copy_data #$C000 #data #DATA_SIZE
jmp *
.endseg
RUN main
.proc copy_data (.word src_ptr .word dst_ptr .byte size) .var
; local variables on zp
size .zp_ds 1
src_ptr .zp_ds 2
dst_ptr .zp_ds 2
SCREEN_WIDTH = 40
SCREEN_LINES = 24
.rept SCREEN_LINES, #
.align $100
screen_line:1 .ds SCREEN_WIDTH
.endr
screen_ptr_lo
.rept SCREEN_LINES, #
.byte #<(screen_line:1)
.endr
screen_ptr_hi
.rept SCREEN_LINES, #
.byte #>(screen_line:1)
.endr
.zpvar = $80
.zpvar .word tmp
.print .zpvar ; = $82
.proc pr1
.zpvar = $80
.zpvar .word ala
zpmax = .zpvar ; dodatkowa etykieta z informacją o
; maksymalnym adresie na stronie zerowej
.endp
.proc pr2
.zpvar = $80
.zpvar .long tmp
zpmax = .zpvar
.endp
.print pr1.zpmax ; = $82
.print pr2.zpmax ; = $82
.procedure ...
.zpvar = proc_name.zpmax
mads 2.1.3
Source: f.asm
1 opt h-
2 org 0
3 .rept 2
4 .REPT 3
5 DTA #
6 .ENDR
7 .REPT 1000
8 DTA $10+#
9 .ENDR
10 .ENDR
10 .endr
Source: REPT
10 .endr
Source: REPT
5 0000 00 DTA #
5 0001 01 DTA #
5 0002 02 DTA #
Source: f.asm
5 .endr
Source: REPT
5 0003 00 DTA #
5 0004 01 DTA #
5 0005 02 DTA #
Source: f.asm
5 .endr
Source: REPT
5 0006 00 DTA #
5 0007 01 DTA #
5 0008 02 DTA #
Source: f.asm
5 .endr
Source: REPT
5 0009 00 DTA #
5 000A 01 DTA #
5 000B 02 DTA #
Source: f.asm
Source: f.asm
11
at - czy uwazam ze jestem tam gdzie jestem
atmost - nie przelecialem
bx "write>=main_f and write<main_t and write!=m_dliy and write!=m_dlia and write!=m_dlix and write!=m_markerrrr and write!=m_marker_s_x and write!=wiper.m_exit_column and (write<wiper.fill_s or write>=wiper.fill_e)"
bx "pc>=charFiller_f and pc<charFiller_t and (write>=$100 and write<chardata_f)"
ORG $2000
LDA #<SRC
STA SKAD
LDA #>SRC
STA SKAD+1
JMP COPY
XYZ $0600 ; tutaj coś co by zamarkowało nowy adres
SRC
LDA RANDOM
STA COLBAK
JMP SRC
ORG $A000
nop
;jakiś kod
nop
rts
.local ver1,$0600
lda #1
rts
.end
.local ver2,$0600
lda #2
rts
.end