я тоже не возьму в толк DAA - объясните, что не так - 5 минут побыть дураком очень полезно.
Процедурки поворота на 90 град - отличные. И потраченное редкое свободное время оценено. Хорошо, друзья, а возможен ли табличный вариант или еще что-то - выжать скорость. Ну, разумеется, без фанатизма на полпамяти )))
Тут стало снова интересно
Вот, генерация автомаски тайла 16х16 из Диззика. Кто быстрее?
- - - Добавлено - - -Код:;--------------------------------------------------------------- ; Генерация автомаски тайла CREATE_AUTOMASK: LD HL,FOREGND_BUF ; Сдвиг вверx LD DE,FOREGND_BUF+4 LD C,#0F LD B,C JR UP_CPY1 UP_CPY2 INC E INC E INC E INC L INC L INC L UP_CPY1 LD A,(DE) INC E OR (HL) LD (HL),A INC L LD A,(DE) OR (HL) LD (HL),A DJNZ UP_CPY2 EX DE,HL ; Сдвиг вниз LD B,C JR DN_CPY1 DN_CPY2 DEC E DEC E DEC E DEC L DEC L DEC L DN_CPY1 LD A,(DE) DEC E OR (HL) LD (HL),A DEC L LD A,(DE) OR (HL) LD (HL),A DJNZ DN_CPY2 EX DE,HL INC C ; Сдвиг вправо LD B,C RR_LP2 LD E,(HL) LD A,E RRA OR E LD (HL),A INC L RR E LD A,(HL) RRA OR (HL) LD (HL),A INC L INC L INC L DJNZ RR_LP2 LD B,C ; Сдвиг влево и инверсия RL_LP2 DEC L DEC L DEC L LD E,(HL) LD A,E RLA OR E CPL LD (HL),A DEC L RL E LD A,(HL) RLA OR (HL) CPL LD (HL),A DJNZ RL_LP2 RET
Можно ещё попробовать придумать быстрый алгоритм, который может сделать маску с заливкой пустот внутри.
а есть какие-то параметры вход/выход, особенности, ограничения?
я чужой на этом празднике жизни(:
Шынни, давай не скромничай! Лучше станцуй на столе со своим вариантом )
Один товарищ написал волшебную процедуру, которая мягко убивает 128-ой бейсик, не прерывая выполнение самой бейсик-программы. Как известно, если бейсик запущен в 128-ом варианте, то он и работает медленнее, и буфер принтера занимает и т.д. С этой же процедурой - всё зашибись. Есть только один вопрос, реально ли её сделать покороче 45-ти байт?
Скрытый текст
Код:OUTPUT Usr0x02.bas org #5CCB ;; Three basic lines line1 dw #0100,lenln1-4 db REM,'Busy soft 07.04.2017',#0D line2 dw #0200,lenln2-4 db RAND,USR,VAL,'"',PEEK,'23627+256*',PEEK,'23628+3"',#0D line3 dw #0300,lenln3-4 db LOAD,'""',#0D ;; Basic variables varss db 'S'+#80 ;; Variable s$ dw lencod ;; Length of whole variable content OUTPUT Usr0x02.cod ;; Content of variable s$ start res 4,(iy+#01) ;; Switch to 48 basic ld hl,(ramtop) ;; Recontruction of stack for 48 basic ld (hl),#3E ;; End-of-stack mark for basic RETURN dec hl ;; (for detect RETURN without GOSUB) ld sp,hl ld hl,main ;; Standart error handler push hl ;; (for displaying error messages) ld (errsp),sp ld hl,inican ld de,canmem ;; Base address for channel information ld bc,21 ld (chans),de ldir ld l,low stdata ;; Initial open channels ld e,low strms ld c,low 14 ldir jp runbas ;; Continue in 48 basic interpreter endend ;; Lengths lenln1 = line2-line1 lenln2 = line3-line2 lenln3 = varss-line3 lenbas = varss-line1 lencod = endend-start lenall = endend-line1 ;; Basic tokens REM = #EA RAND = #F9 VAL = #B0 USR = #C0 PEEK = #BE LOAD = #EF ;; Used ROM addresses main = #1303 inican = #15AF stdata = #15C6 runbas = #1BF4 ;; Used system variables strms = #5C10 errsp = #5C3D chans = #5C4F ramtop = #5CB2 canmem = #5CB6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[свернуть]
Куплю корпус и материнку от Spectrum +2/+3
А я всегда использовал для этого дела кусок от загрузчика TASM. Например.
В правильно заданном вопросе содержится половина ответа
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)