ASM6502[d][r][debug][run] ; Paint program for Alterchan ; Рисовалка для Альтерчана ; ; Keyboard controls: / Управление по борьбе с клавиатурой: ; Numpad 1 — Numpad 9 — move cursor/brush (numlock ON!) ; / перемещение кисти/курсора (включить numlock); ; Numpad 5 or 5 — paint pixel with current color/return to background ; / рисовать пиксель текущим цветом/вернуть к цвету фона; ; Numpad + — continuous painting mode ON/OFF ; / включить/выключить режим непрерывного рисования; ; Numpad 0 or SPACE - palette (space may stop the sim or do something if some element in browser is focused) ; / палитра (пробел может остановить эмуль или сделать что-то, если что-нибудь выделено в браузере); ; f/F - fill everything flagged as background with current color ; / залить текущим цветом всё, помеченное как фон ; / (если вместо этого открывается палитра, включить английскую раскладку).
*=0 cursor_low: dcb $ef ; $0,$1 - cursor coords cursor_high: dcb $03 ; = $03ef for screen center color: dcb $01 ; $2 color_num: dcb $0f ; $3 - palette color index border_clr: dcb $b ; $4 - palette border color palette: ; $5 - and palette array[15] itself
; Draw borderlines ldx #17 lda $4 ;border_clr to A border_loop: sta $507,x sta $5a7,x dex bpl border_loop
; Draw center borderlines tax ;border_clr to X ldx #0 clc border_loop2: sta $527,x sta $538,x pha txa adc #$20 ;next line tax pla cpx #$80 bne border_loop2
; Draw palette ldx #7 pal_loop: txa asl ; A=A*2 tay lda $5,x ;palette address sta $528,y sta $548,y iny sta $528,y sta $548,y lda $d,x ;palette address + 8 for 2nd row sta $568,y sta $588,y dey sta $568,y sta $588,y dex bpl pal_loop
; Flash color and wait for input palette_input_loop: ; Blink current color lda $3 ;color_num tax clc asl ;A=color_num*2 cmp #16 bmi less_than_16 clc ;+$30 for the 2nd palette row adc #$30 ;(for ex., $8*2+$30=$40, $528->$568 which is correct) less_than_16: tay cpx #$c beq darkblink cpx #$d beq darkblink cpx #$f beq darkblink cpx #$5 beq darkblink lda #1 ;white color for blink bne brightblink darkblink: lda #$c ;or gray brightblink: sta $528,y sta $548,y iny sta $528,y sta $548,y
>>8AF И да и нет. 6502/6510 и архитектурно с ним совместимые применяется (в основном, конечно, применялся в прошлом, а не сейчас) дофига где. Из самых распространённых платформ будут, наверное, Commodore 64, NES (Famicom, Dendy), Atari 2600. Проц у них тот же, но видеосистема устроена по другому, другие адреса, другой формат пикселей. И разрешение в большинстве случаев будет не 32x32, а повыше. Нет никакого "Memory location $fe contains a new random byte on every instruction". Короче, запустить можно, но без портирования, учитывающего особенности обоих платформ ничего как надо не заработает. Таким образом, из практического применения остаётся академическое, для изучения асмы. И оно весьма актуально, на Западе 65?? был дичайше популярен именно в этой роли, в то время как в Совок его, и 68000 почти не поставляли, видимо, из-за тогдашних санкций, отчего отечественные начинающие погромисты мучались и до сих пор мучаются, если кто не в курсе со всякими i8080/580ВМ80, которые для этого подходят несравнимо хуже. А эмулятор для этого годится больше, чем "живая" Денди или Коммодора.
>>8Cf Контроллерами, например. Для восьмиразрядных асм до сих пор идёт вместе с сишечкой, хоть уже и давно не наравне с ней. А так, конечно, это знание, которое необходимо иметь всем связанным с IT/выч. техникой и электроникой технарям, но чаще всего достаточно самого поверхностного представления. И это поверхностное представление об устройстве процессоров и их погромировании непосредственно на асме, а то и в машинных кодах, насколько знаю, дают на многих релейтед и не очень специальностях, и нередко на примере всё того же сраного i8080.
>>8Ca Олсо, в эмуляторе написано, что палитра рипнута с C64, а это не совсем так, цвета там грубо округлённые (в вебовской шестнадцатиричной rgb-шной форме).
>>8D0 Вот как пикрелейтед бы выглядел с настоящей коммодоровской палитрой (приблизительной, потому как точной не существует — она зависела от NTSC или PAL-видеотракта и цветонастроек телевизора). Часть инфы с картинок потерялась потому что цвета были сконвертированы, а не просто применена другая палитра. Кое-где пофиксил это вручную. В общем, она не такая кислотная и позволяет в более плавные градации оттенков и яркости. Переделывать эмуль не нужно, это так, для справки.
if (regY >= value) regP |= 1; else regP &= 0xfe;``` соответственно. Между прочим, под первой заменой автором закомменчен фактически пофикшенный вариант. А во второй непонятно зачем продублирован код из doCompare() с добавлением "ov = value;" (переменная "ov", вроде бы, вообще нигде не используется) вместо простого "value = popByte(); doCompare( regY, value ); break;", как сделано в других обработчиках CPY/CPX/CMP. Видимо, автор что-то фиксил-недофиксил.Upd: в версии 1.6 он действительно этого таракана исправил. И, как написано, ещё одного. Его уже исправлять не нужно, он не критичный совсем, и, насколько я сейчас сумел проверить, пофикшен не до конца. 1.6, напомню, бета и глючная, хоть и самая быстрая.Не хочу этим за глаза гнать на автора эмуля, он решил очень сложную задачу, за что честь ему и хвала.РАЗМЕТКИ БОГУ РАЗМЕТКИ! СПОЙЛЕРОВ ТРОНУ ИЗ СПОЙЛЕРОВ!
>>8YO Джаваскриптам и так доверия нет, а тут ещё и сплошные закрытые исходники будут. Алсо, жаваплагин, флэшеговно и забытый ActiveX. Это вот, новое, вроде обещают, что будет чем-то лучше, но всё же закрадывается подозрение, что обмен шила на мыло (намылив которым юзерам введут очередные гуглозонды).