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.
TDC:
Edytor:program Test;
uses crt;
var i: byte;
begin
for i :=0 to 265 do writeln(i);
repeat until keypressed;
end.
BYTE FUNC TEST()
RETURN (1)
PROC MAIN()
BYTE X=[0]
X=TEST()
PRINTBE(X)
RETURN
zbyti:
Jako osoba po raz pierwszy programująca w językach wysokiego poziomu na komputerach 8-bit nie mam świadomości ich (kompilatorów) ograniczeń, zwłaszcza w wydaniu natywnym.astrofor:
Obecnie w programowaniu Kompilator jest po to żeby wyłapywać wszystkie błędy, i zapewniać standardy, a nie być hiper liberalnyastrofor:
aby zapewnić happy codingastrofor:
Instrukcja goto to pure evil, nasi poprzednicy pod koniec lat 90 tych toczyli boje i pisali książki żeby się tego cholerstwa pozbyć.astrofor:
Jednym słowem, to o czym dziś była mowa to w rozumieniu współczesnym wysyp antypatternówastrofor:
Ale traktując to jako powrót do retro to w sumie świetna rozrywka i jak ktoś patrzy z dobrej perspektywy to lekcja też.PROC WAIT()
BYTE I,FRAME
FOR I=0 TO 3
DO
FRAME=RTCLOCK
WHILE FRAME=RTCLOCK DO OD
OD
RETURN
;MAZE
;------------------------------------
DEFINE
ESC="28",
AVATAR="32",
LEFT="PLAYERPOS^=0 PLAYERPOS==-1 PLAYERPOS^=AVATAR",
RIGHT="PLAYERPOS^=0 PLAYERPOS==+1 PLAYERPOS^=AVATAR",
UP="PLAYERPOS^=0 PLAYERPOS==-40 PLAYERPOS^=AVATAR",
DOWN="PLAYERPOS^=0 PLAYERPOS==+40 PLAYERPOS^=AVATAR"
;------------------------------------
CARD
SAVMSC=$58
BYTE
RTCLOCK=$14,KBCODE=$D209,
SKSTAT=$D20F,STICK0=$0278,
RND=$D20A
BYTE POINTER PLAYERPOS
BYTE ARRAY SCREEN
;------------------------------------
PROC BOX()
BYTE X,Y
SCREEN=SAVMSC
FOR Y=0 TO 23
DO
FOR X=0 TO 23 DO SCREEN(X)=128 OD
SCREEN==+40
OD
RETURN
;------------------------------------
PROC WAIT(BYTE FRAMES)
FRAMES==+RTCLOCK
WHILE FRAMES<>RTCLOCK DO OD
RETURN
;------------------------------------
PROC MOVE()
IF KBCODE=134 THEN LEFT RETURN FI
IF KBCODE=135 THEN RIGHT RETURN FI
IF KBCODE=142 THEN UP RETURN FI
IF KBCODE=143 THEN DOWN RETURN FI
RETURN
;------------------------------------
PROC MAIN()
GRAPHICS(0)
BOX()
PLAYERPOS=SAVMSC+41
PLAYERPOS^=AVATAR
DO
IF (SKSTAT & 4)=0 THEN
IF KBCODE=ESC THEN EXIT FI
MOVE() WAIT(8)
FI
OD
RETURN
FRAME=RTCLOCK+3
WHILE FRAME<>RTCLOCK DO OD
PROC WAIT(BYTE FRAMES)
FRAMES==+RTCLOCK
WHILE FRAMES<>RTCLOCK DO OD
RETURN
;
; $00-$7f zeropage for OS
; $80-$ff zeropage for you
; $100-$1ff CPU stack
; $200-$2ff OS vector, registers
; $300-$3ff OS vector, registers
; $400-$5ff OS buffers
; $600-$6ff Page 6, object code in BASIC
; $700-$1fff Disk Operating System
; $2000-RAMTOP Your code
; $8000-$9fff Cartrige 8k/low 16k
; $a000-$bfff Cartrige 8k/High 16k/BASIC
; $c000-$cfff OS part 1
; $cc00-$cfff OS character set, international
; $e000-$ffff OS part 2
; $e000-$e3ff OS character set, standard
MODULE
; ATARI VIRUS INVADERS
; WARSZTAT ATARIONLINE 2020
; BY TDC
;----main variables-------------------
BYTE
GOVER,LIVES,LEVEL
CARD
QQ,Z,TI,SCREEN=[$9B50]
CARD ARRAY FY(36),DD(7)
;----helper variables----------------
BYTE
A,B,X,Y,
Q,Q1,Q2,Q3,Q4,Q5
;----map variables--------------------
BYTE
CH=$2FC,RANDOM=$D20A,
STICK0=$278,STRIG0=$284,
VCOUNT=$D40B,WSYNC=$D40A,
COLPF2=$D018,COLBK=$D01A
CARD SDLSTL=$230
BYTE ARRAY AMEMORY=0;
;COLOR2 --> $2C6
;POKE($2C6,10) AMEMORY($2C6)=10
;----main code------------------------
PROC START()
LIVES=3
X=125
RETURN
;-------------------------------------
PROC VIRUS()
AMEMORY(708)=0 ;COLOR0
AMEMORY(709)=8 ;COLOR1
AMEMORY(710)=$94 ;COLOR2
AMEMORY(711)=$1F ;COLOR3
AMEMORY(712)=0 ;COLOR4
; ZERO(SCREEN,1120)
START()
WHILE CH<>28
DO
AMEMORY(77)=0 ;ATRACT
OD
RETURN
;-------------------------------------
PROC INI()
;AMEMORY(559)=0 ;DMCTL
FOR Q=0 TO 32 DO FY(Q)=Q*40 OD
;WG("D:DL_A.DAT",$8033,$CE,4)
WHILE CH<>28
DO
VIRUS()
OD
CH=42
GRAPHICS(0)
RETURN