Chúc mừng sinh nhật, Raffaele Cecco!


33

Raffaele Cecco là một lập trình viên người sản xuất một số trong những tốt nhất trò chơi video cho ZX Spectrum máy tính vào cuối năm tám mươi. Trong số những người khác, ông đã phát triển CybernoidExolon rất được hoan nghênh .

Raffaele sẽ bước sang tuổi 50 vào ngày 10 tháng 5 năm 2017 . Thử thách này là một cống nhỏ đối với anh ấy, vì những giờ phút hạnh phúc mà nhiều người trong chúng tôi đã dành để chơi những trò chơi tuyệt vời đó, và cho động lực mà họ mang lại.

Các thách thức

Mục đích là để tạo ra một marquee hình chữ nhật lấy cảm hứng từ cái nhìn thấy trong màn hình menu chính của Cybernoid , nhưng trong nghệ thuật ASCII.

Cụ thể, chuỗi "Happy birthday Raffaele Cecco "(lưu ý không gian cuối cùng) sẽ được hiển thị xoay dọc theo các cạnh của hình chữ nhật 12 × 5, với thời gian tạm dừng liên tục giữa các ảnh chụp nhanh.

Ví dụ: giả sử văn bản được hiển thị theo chiều kim đồng hồ và xoay ngược chiều kim đồng hồ (xem các tùy chọn bên dưới), đây là ba ảnh chụp nhanh liên tiếp của hình chữ nhật:

Happy birthd
           a
o          y
c           
ceC eleaffaR

sau đó

appy birthda
H          y

o          R
cceC eleaffa

sau đó

ppy birthday
a           
H          R
           a
occeC eleaff

vân vân

Quy tắc

Không có đầu vào sẽ được thực hiện. Đầu ra sẽ thông qua STDOUT hoặc tương đương, hoặc trong một cửa sổ đồ họa.

Đầu ra thực sự nên mô tả xoay văn bản; nghĩa là, mỗi ảnh chụp mới sẽ ghi đè lên ảnh trước để tạo ấn tượng về chuyển động. Điều này có thể được thực hiện bằng bất kỳ phương tiện nào, ví dụ, bằng cách viết số lượng dòng mới phù hợp để xóa màn hình một cách hiệu quả. Có thể chấp nhận nếu điều này chỉ hợp lệ cho một kích thước màn hình nhất định; Chỉ cần xác định nó trong câu trả lời.

Các tùy chọn sau được chấp nhận:

  • Văn bản có thể được hiển thị theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ, và có thể xoay theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ (ví dụ ảnh chụp nhanh ở trên giả sử hiển thị theo chiều kim đồng hồ và quay ngược chiều kim đồng hồ).
  • Việc quay vòng phải diễn ra theo chu kỳ trong một vòng lặp vô hạn (cho đến khi chương trình bị dừng lại) và có thể bắt đầu ở bất kỳ giai đoạn nào.
  • Tạm dừng thời gian giữa các ảnh chụp nhanh nên xấp xỉ không đổi, nhưng có thể được tự do lựa chọn trong khoảng từ 0,1 đến 1 giây. Tạm dừng ban đầu trước khi hiển thị ảnh chụp nhanh đầu tiên được chấp nhận.
  • Chữ cái có thể là chữ hoa, chữ thường hoặc chữ thường (như trong ví dụ trên).
  • Không gian trống hàng đầu hoặc dấu được cho phép.

Các chương trình hoặc chức năng được cho phép, trong bất kỳ ngôn ngữ lập trình . Sơ hở tiêu chuẩn bị cấm.

Nếu có thể, vui lòng cung cấp tệp gif hiển thị đầu ra hoặc liên kết để kiểm tra chương trình.

Mã ngắn nhất trong byte thắng.


4
Điều gì sẽ xảy ra nếu nó không thể ghi đè? Chúng ta có thể sử dụng 99 quả bóng bay màu đỏ không ... dòng mới?
Tít

@Titus Chỉ khi điều đó xóa màn hình một cách hiệu quả và mang lại ấn tượng về văn bản chuyển động (xin vui lòng!)
Luis Mendo

"Điều này có thể được thực hiện bằng bất kỳ phương tiện nào, ví dụ, bằng cách viết số lượng dòng mới phù hợp để xóa màn hình một cách hiệu quả." - không phải điều này phụ thuộc vào kích thước bàn điều khiển? Có thể chấp nhận in một dòng mới nếu nó (cùng với hình chữ nhật tiếp theo) có nghĩa là lần lặp tiếp theo thay thế cho dòng trước đó (trong bảng điều khiển nhỏ của tôi )?
Jonathan Allan

1
@Jonathan Ok, chỉ cần cung cấp một gif với bảng điều khiển đó để thấy hiệu quả
Luis Mendo

Câu trả lời:


8

Thạch , 74  65 byte

“ÆÇÐÑ÷øœ‘Ṭœṗ⁸ṙ©-¤4421œ?U0¦;"⁷,⁶ẋ⁵¤¤ṁ9¤ȮœS.®ß
“9ɲcḟ#%⁴1t(ŀȷUCOw⁾»Ç

Phiên bản Windows chạy trong giao diện điều khiển cp-65001 cao 6 dòng.
Có một nửa giây (cộng với đánh giá) tạm dừng giữa các lần lặp:

gif của đầu ra

Làm sao?

“9ɲcḟ#%⁴1t(ŀȷUCOw⁾»Ç - Main link: no arguments
“9ɲcḟ#%⁴1t(ŀȷUCOw⁾»  - compression of [d( Happy)+d( birthday)+d( Raff)+s(aele)+d( Ce)+d(cc)+s(o)] - d=dictionaryLookup, s=stringEncode.
                     -              = " Happy birthday Raffaele Cecco"
                   Ç - call last link (1) as a monad

“ÆÇÐÑ÷øœ‘Ṭœṗ⁸ṙ©-¤4421œ?U0¦;"⁷,⁶ẋ⁵¤¤ṁ9¤ȮœS.®ß - Link 1, rotate, print, recurse: string s
                ¤                            - nilad followed by link(s) as a nilad:
            ⁸                                -   link's left argument (initially s)
               -                             -   literal -1
             ṙ                               -   rotate left -1 (e.g. "blah" -> "hbla")
              ©                              -   copy to register and yield
“ÆÇÐÑ÷øœ‘                                    - literal: [13,14,15,16,28,29,30]
         Ṭ                                   - untruth: [0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1]
          œṗ                                 - partition right at truthy indexes of left
                                             -   chops up the rotated string into 8
                                             -   e.g. [" Happy birth",'d','a','y'," Raffaele Ce",'c','c','o'])
             4421œ?                          - get the 4421st permutation of those items
                                             -   e.g. [" Happy birth",'o','d','c','a','c','y'," Raffaele Ce"]
                         ¦                   - apply to indexes:
                        0                    -   0 (right most)
                       U                     -   upend  (e.g. " Raffaele Ce" -> "eC eleaffaR ")
                                     ¤       - nilad followed by link(s) as a nilad:
                                  ¤          -   nilad followed by link(s) as a nilad:
                                 ¤           -     nilad followed by link(s) as a nilad:
                              ⁶              -       literal space
                                ⁵            -       literal 10
                               ẋ             -       repeat: "          "
                            ⁷                -     literal new line
                             ,               -     pair: ['\n',"          "]
                                     9       -   literal 9
                                    ṁ        -   mould like: ['\n',"          ",'\n',"          ",'\n',"          ",'\n',"          ",'\n']
                           "                 - zip with:
                          ;                  -   concatenation
                                             -     e.g. [" Happy birth\n","o          ","d\n","c          ","a\n","c          ","y\n","eC eleaffaR           ","\n"])
                                      Ȯ      - print and yield
                                         .   - literal 0.5
                                       œS    - after sleeping right seconds yield left
                                          ®  - recall value from register (s rotated by 1)
                                           ß - call this link (1) with the same arity (as a monad)

16

HTML + ES6, 200 byte

<pre id=o><script>setInterval(_=>o.innerHTML=(f=k=>k--?f(k)+(k<11?s[k]:k>47?s[74-k]:k%12?++k%12?' ':s[10+k/12]+`
`:s[30-k/12]):'')(60,s=s.slice(1)+s[0]),99,s="Happy birthday Raffaele Cecco ")</script>


No trông tuyệt!
Luis Mendo

@LuisMendo Điều đó mang lại những ký ức, mặc dù tôi nhớ Cybernoid II tốt hơn so với cái đầu tiên. Tôi chắc chắn tôi cũng đã thấy hiệu ứng này trong một vài bản cracktros. ;-)
Arnauld

Vâng, tôi cũng thích thứ hai :-)
Luis Mendo

11

ZX Spectrum BASIC, 187 byte

Bực mình vì Philip đã đánh bại tôi trong vài phút :-) Các số như \{15}mã kiểm soát không thể in được - biên dịch với zmakebas nếu bạn muốn sửa lại. Lưu ý rằng hình chữ nhật đầy đủ không được in ngay lập tức, nhưng nó sẽ rơi vào vị trí sau một vài khung hình đầu tiên.

1 let a$=" Happy birthday Raffaele Cecco":dim b$(code"\{15}"):dim c$(pi*pi)
3 let b$=a$(sgn pi)+b$:let a$=a$(val"2" to)+a$(sgn pi):print "\{0x16}\{0}\{0}";a$(to code"\{12}")'b$(sgn pi);c$;a$(val"13")'b$(val"2");c$;a$(code"\{14}")'b$(pi);c$;a$(len b$)'b$(val"4" to):go to pi

Hãy dùng thử tại đây (phiên bản mô phỏng JS trực tuyến, nhấn enter để bắt đầu) ... http://jsspeccy.zxdemo.org/cecco/

Bạn cũng có thể lưu bốn byte bằng cách xóa màn hình giữa các khung thay vì thực hiện IN, nhưng nó quá nhấp nháy để có giá trị ...

1 let a$=" Happy birthday Raffaele Cecco":dim b$(code"\{15}"):dim c$(pi*pi)
3 let b$=a$(sgn pi)+b$:let a$=a$(val"2" to)+a$(sgn pi):cls:print a$(to code"\{12}")'b$(sgn pi);c$;a$(val"13")'b$(val"2");c$;a$(code"\{14}")'b$(pi);c$;a$(len b$)'b$(val"4" to):go to pi

1
À, nhưng bạn thắng được rất nhiều byte :-)
Philip Kendall

2
Chào mừng đến với PPCG!
Martin Ender

1
Chào mừng đến với trò chơi. ZX luôn luôn tốt để xem. Câu trả lời tốt đẹp. +1.
ElPedro

10

V, 75 71 70 byte

4 byte được lưu nhờ @DJMcMayhem

iHappy birthd
±± a
o±° y
c±± 
ceC eleaffaR6ògÓÉ {dêjP2Ljjx1Lp5LxkpGd

Đây là một liên kết TIO, nhưng lưu ý rằng điều này sẽ không hoạt động trên TIO vì chương trình lặp vô hạn. Hãy thử trực tuyến!

Vì mã này chứa unprintables, đây là một hexdump.

00000000: 6948 6170 7079 2062 6972 7468 640a b1b1  iHappy birthd...
00000010: 2061 0a6f b1b0 2079 0a63 b1b1 200a 6365   a.o.. y.c.. .ce
00000020: 4320 656c 6561 6666 6152 1b36 f267 d3c9  C eleaffaR.6.g..
00000030: 207b 64ea 6a50 324c 166a 6a78 314c 7035   {d.jP2L.jjx1Lp5
00000040: 4c78 6b70 4764                           LxkpGd

Thời gian ngủ là 500 mili giây.

giffy


Bạn có thể cung cấp một liên kết TIO?
Rɪᴋᴇʀ

Một số mẹo (không phải tất cả đã được kiểm tra): H|-> {. <C-v>êx-> 5L->}
DJMcMayhem

Ngoài ra, lệnh repchar của bạn đều được sử dụng 9 khi bạn có thể sử dụng 10 hoặc 11. Ví dụ: thay đổi giữa ba dòng để ±± a, o° yc±±<space>
DJMcMayhem

@DJMcMayhem Mọi thứ đều hoạt động nhưng 5L=> }.
Kritixi Lithos

@Riker Xong, nhưng lưu ý rằng liên kết TIO không thể hiển thị hình động
Kritixi Lithos

9

ZX Spectrum BASIC, 274 byte

Vâng, ai đó đã phải làm điều đó. Trẻ em có thể muốn loại bỏ điều này vì quá chậm và không có sự tạm dừng giữa các hình ảnh động, nhưng tôi đang yêu cầu một trường hợp đặc biệt ở đây :-)

10 LET m$=" Happy birthday Raffaele Cecco": LET o=0: LET l=LEN m$: LET f=4: LET t=12: LET a=t+f: LET b=27
20 FOR j=SGN PI TO l: LET i=j+o: IF i>l THEN LET i=i-l
40 LET x=(i-SGN PI AND i<=t)+(11 AND i>t AND i<=a)+(b-i AND i>a AND i<=b)
50 LET y=(i-t AND i>t AND i<=a)+(f AND i>a AND i<=b)+(b+f-i AND i>b): PRINT AT y,x;m$(j): NEXT j
80 LET o=o+SGN PI: IF o>=l THEN LET o=o-l
90 GO TO t

Cũng không chơi gôn lắm. 274 byte là số byte được Spectrum lưu vào băng khi lưu chương trình này.


1
Bạn đã đi đến tất cả những rắc rối của việc sử dụng SGN PIcho 1(tiết kiệm 5 byte) nhưng bạn quên NOT PIcho 0VALcho hằng số khác ...
Neil

1
NOT PITôi chỉ bỏ lỡ. Cố tình không làm VALnhư vậy là đủ chậm, và VALchậm kinh khủng.
Philip Kendall

1
ZX Basic luôn nhận được sự ủng hộ từ tôi. Không có giáo dục ở đây. Tôi nhớ những ngày xưa tốt đẹp ... Câu trả lời tốt đẹp.
ElPedro

8

SVG (HTML5), 267 byte

<svg width=200 height=90><defs><path id=p d=M40,20h120v50h-120v-50h120v50h-120v-50></defs><text font-size="19" font-family="monospace"><textPath xlink:href=#p>Happy birthday Raffaele Cecco<animate attributeName=startOffset from=340 to=0 dur=5s repeatCount=indefinite>

Chà, nó hình chữ nhật, và nó một marquee, và nó văn bản ASCII ...


1
... và nó chạy smooooth :-)
Luis Mendo

7

PHP, 184 byte

for($r=" ";++$i;sleep(print chunk_split(str_pad($r,96,"
",0),12)),$r=$k="0")for(;$c="ABCDEFGHIJKWco{zyxwvutsrqpdXL@"[$k];)$r[ord($c)-64]="Happy Birthday Raffaele Cecco "[($i+$k++)%30];

in 39 dòng mới để xóa màn hình; chạy với -nr.
Tạm dừng thực tế là 1 giây; nhưng tôi tăng tốc gif.

Chúc mừng sinh nhật

vô dụng

$p = "ABCDEFGHIJKWco{zyxwvutsrqpdXL@";  # (positions for characters)+64 to ASCII
$t = "Happy Birthday Raffaele Cecco ";  # string to rotate
for($r=" ";                     # init result to string
    ++$i;                       # infinite loop
    $r=$k="0")                      # 6. reset $r and $k
{
    for(;$c=$p[$k];)                # 1. loop through positions
        $r[ord($c)-64]=                 # set position in result
        $t[($i+$k++)%30];               # to character in string
    sleep(                          # 5. wait 1 second
        print                       # 4. print
            chunk_split(
            str_pad($r,96,"\n",0)   # 2. pad to 96 chars (prepend 36 newlines)
            ,12)                    # 3. insert newline every 12 characters
        );
}

6

Python 2, 230 184 byte

import time
s='Happy birthday Raffaele Cecco '*2
i=0
while[time.sleep(1)]:print'\n'*30+'\n'.join([s[i:i+12]]+[s[i-n]+' '*10+s[i+11+n]for n in 1,2,3]+[s[(i+15)%30:][11::-1]]);i+=1;i%=30

Hãy thử tại repl.it

nhập mô tả hình ảnh ở đây


5

Python 3 , 160 byte

import time;s="Happy_birthday_Raffaele_Cecco_"
while[time.sleep(1)]:print(s[:12]+'\n%s%%11s'*3%(*s[:-4:-1],)%(*s[12:15],)+'\n'+s[-4:14:-1]+'\n'*30);s=s[1:]+s[0]

Hãy thử trực tuyến! (Không có hoạt hình)


Tôi biết bạn sẽ đến và đánh tôi bằng Python. Tôi đã làm rất tốt Ít nhất thì tôi cũng sử dụng các "lỗi" mà bạn không thể sử dụng với Python 3 :-). Câu trả lời tốt đẹp như mọi khi. +1
ElPedro

5

Python 2, 218 200 190 181 176 byte

import time;f='Happy birthday Raffaele Cecco '
while[time.sleep(1)]:v=f[::-1];print'\n'*90,f[:12],''.join('\n'+a+' '*10+b for a,b in zip(v[:3],f[12:16])),'\n',v[3:15];f=f[1:]+f[0]

-18 byte bằng cách xóa strđịnh dạng

-10 byte, nhờ các đề xuất @Uriel và @ElPedro

-9 byte bằng cách loại bỏ chỉ mục tiêu cực

-5 byte bằng cách lưu trữ đảo ngược fnhư vwhileđiều kiện

thay thế


1
Bạn có thể cắt những khoảng trắng giữa while 1:printvà thay thế tiếp theo ;với một (thực tế) xuống dòng. Ngoài ra f='H... Cũng f[:1]là thực tế f[0].
Uriel

OP tuyên bố rằng thời gian có thể là bất cứ thứ gì trong khoảng từ 0,1 đến 1 giây, vậy tại sao không time.sleep(1)lấy nó dưới 200?
ElPedro

3

Sử dụng Ruby + GNU Core, 136 byte

s='Happy birthday Raffaele Cecco '
loop{puts`clear`+s[0,12],(0..2).map{|i|s[~i]+' '*10+s[12+i]},s[15,12].reverse
s=s[1,29]+s[0];sleep 1}

3

Python 2, 182 179 173 160 byte

i="Happy birthday Raffaele Cecco "
while[s for s in i*18**4]:print'\n'*99,'\n'.join([i[:12]]+[i[-z]+' '*10+i[11+z]for z in 1,2,3]+[i[15:-3][::-1]]);i=i[1:]+i[0]

Hãy thử tại repl.it

Không hoạt động trên TIO nên lần đầu tiên tôi sử dụng repl.it

Chỉnh sửa Sử dụng vòng lặp "lãng phí thời gian" để đếm đến 1000000 mang lại độ trễ nhất quán trong khoảng từ 0,1 đến 1 giây trên máy của tôi và trên repl.it và tiết kiệm nhập time. Tôi đoán rằng nếu bạn chạy nó trên một máy tính cũ với RAM 64 MB thì nó có thể vượt quá 1 giây nhưng tôi khá chắc chắn điều đó sẽ không xảy ra. Nếu vậy thì chỉ cần giảm 1000000 và tiết kiệm cho tôi một vài byte :-)

Chỉnh sửa 2 -6 để ghi nhớ rằng việc hiểu danh sách trong Python 2 đã rò rỉ giá trị cuối cùng sđể tôi có thể sử dụng nó sau này và cũng nhớ rằng mọi thứ khác ngoài 0 và "" là đúng. Lỗi hay tính năng? Đừng quan tâm. Nó đã tiết kiệm cho tôi 6 byte :-)

Chỉnh sửa 3 13 khác bằng cách hoàn nguyên xoay và bằng cách sử dụng mức độ hiểu danh sách cho các hàng giữa bên trong nối và thay đổi 3000000thành 40**4. Cảm ơn @FelixDombek cho người cuối cùng. Phải mất thủ thuật hiểu danh sách của tôi mặc dù.


1
Bạn có thể sử dụng ký hiệu khoa học hoặc một biểu thức sức mạnh cho số lượng lớn?
Felix Dombek

1
Biểu thức sức mạnh có, ký hiệu khoa học không (vì nó trở thành dấu phẩy, mà bạn không thể nhân với chuỗi).
L3viathan

3
Bắt buộc 999999thay vì 1000000cho một byte: V
Giá trị mực

Cảm ơn @ValueInk nhưng bằng cách sử dụng "lỗi" hiểu danh sách bị rò rỉ, tôi thực sự đã phải tăng lên 3000000 và vẫn lưu được 3 byte :-)
ElPedro

Tiếc là không có. @ L3viathan là đúng trên đó.
ElPedro

2

Mã máy ZX81 Z80, 158 130 byte

OK để nó có rất nhiều byte cho đến khi nó được lắp ráp nhưng sau đó nó giảm xuống 130 byte. Không chắc chắn nếu điều đó phá vỡ bất kỳ quy tắc? Đó là bài viết đầu tiên của tôi và chỉ là một khách.

Chương trình sử dụng 'lực lượng vũ phu' để hiển thị thông báo thay vì sử dụng chức năng thông minh như cách nó có các đoạn mã riêng biệt cho dòng trên cùng, dọc bên phải, dòng dưới cùng và dọc bên trái. Hoạt hình đạt được bằng cách xoay nội dung của tin nhắn và sau đó chỉ hiển thị nó sau một thời gian trễ ngắn, chính xác là 0,2 giây vì nó chờ 10 khung hình trong số 50 khung hình (dù sao đối với Zeddys của Vương quốc Anh).

Tôi phải ghi nhận kmurta cho khái niệm xoay tin nhắn để có được hình ảnh động - đã tiết kiệm được 28 byte !!!

main    
  ld hl,happyBirthday           ;load the address of the message
  ld de,(D_FILE)                ;load the base of screen memory
  inc de                        ;increase it by one to bypass the $76
  ld bc,12                  ;ready for 12 loops
  ldir                      ;transfer HL to DE 12 times and increase both accordingly
  ex de,hl                  ;put HL into DE (HL was the message position)
  ld b,4                        ;prepare to loop 4 times
  dec hl                        ;decrease HL (screen location) by 1
rightVertical
  push de                       ;save the character position
  ld de,13                  ;load 13 (for the next line)
  add hl,de                 ;add to HL  
  pop de                        ;get the message position back
  ld a,(de)                 ;load the character into A
  ld (hl),a                 ;save it to HL
  inc de                        ;increase the character position
  djnz rightVertical            ;repeat until B = 0
  dec hl                        ;decrease HL (screen location) by 1 to step back from the $76 char
  ld b,11                       ;prepare for 11 loops
lastLine
  ld a,(de)                 ;load the current character into A
  ld (hl),a                 ;save to the screen
  dec hl                        ;decrease the screen position (as we are going backwards)
  inc de                        ;increase character position
  djnz lastLine             ;repeat until B = 0
  ld b,3                        ;get ready for the left vertical
  inc hl                        ;increase the screen position by 1 as we have gone 1 too far to the left and wrapped to the line above
leftVertical
  push de                       ;save the character position
  ld de,13                  ;load 13 (for the next line)
  sbc hl,de                 ;subtract it to move up a line in memory
  pop de                        ;get the character pos back
  ld a,(de)                 ;load the character
  ld (hl),a                 ;save it to the screen
  inc de                        ;next character
  djnz leftVertical         ;repeat until B = 0 
delayCode
  ld   hl,FRAMES                ;fetch timer                 
  ld   a,(hl)                 ;load into A                        
  sub  10                       ;wait 10 full frames (0.2 of a second)
delayLoop        
  cp  (hl)                  ;compare HL to 0
  jr   nz,delayLoop         ;if not 0 then repeat until it is   
shuffleMessage
  ld a, (happyBirthday)     ;load the first character of the message
  push af                       ;save the first character of the message
  ld hl, happyBirthday      ;load the address of the message
  inc hl                        ;increase by one to get the second char
  ld de, happyBirthday      ;load the start of the message
  ld bc, 29                 ;number of times to loop
  ldir                      ;load HL (char 2) into DE (char 1) and repeat
  pop af                        ;get char 1 back    
  ld (de),a                 ;out it at the end of the string
  jr main                       ;repeat
happyBirthday
    DEFB    _H,_A,_P,_P,_Y,__,_B,_I,_R,_T,_H,_D,_A,_Y,__,_R,_A,_F,_F,_A,_E,_L,_E,__,_C,_E,_C,_C,_O,__

Xin lỗi, tôi không thể đăng một liên kết tới nó đang chạy vì đây là một chương trình được biên dịch theo định dạng .P cho EightyOne (hoặc các trình giả lập khác) hoặc Zeddy thực tế nếu bạn có ZXPand hoặc tương tự để tải nó.

Có thể tải xuống .P tại http://www.sinclairzxworld.com/viewtopic.php?f=11&t=2376&p=24988#p24988


Câu trả lời tốt đẹp! Tôi đã bị thiếu một trong mã máy Z80 :-) Và chào mừng bạn đến với trang web!
Luis Mendo

Bạn có thể cung cấp một gif của chương trình đang chạy?
Luis Mendo

Xin lỗi - Tôi không có phần mềm tạo gif!
Lardo Boffin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.