Что-то не очень понятно. За картошку получили 1200 рублей? Каждый студент, который ездил? Так зачем тогда работать, если за несколько недель на картошке получаешь почти годовую зарплату обычного работника?
Чорт побьери! Как просто, оказывается…
Теперь мне стало еще более непонятно, зачем они убрали поиск яндекса, почему вместо яндекса какой-то серси, который все равно перебрасывает на яндекс…
Кто-то может внятно объяснить?
Не задержка, а время отрисовки.
Если добавить в информацию о кадре время на его отрисовку, то можно учесть его. Тогда и кадры будут рисоваться строго через равные промежутки, и музыка будет идти в соответствии с ритмом.
Насколько я понял, возможности использовать таймер для измерения временных промежутков в Микроше нет. Или есть?
Да, есть у меня особенность такая — когда вижу бессмысленные действия, всегда хочется обратить на них внимание, чтобы что-то упростить.
Насчет килобайтов — сомневаюсь. Разве что алгоритм использовать другой.
А насчет «место трогать нельзя» — это кто сказал? ;memcpy:
; mov a,b ;Copy register B to register A
; ora c ;Bitwise OR of A and C into register A
; rz ;Return if the zero-flag is set high.
loop:
ldax d ;Load A from the address pointed by DE
mov m,a ;Store A into the address pointed by HL
inx d ;Increment DE
inx h ;Increment HL
dcx b ;Decrement BC (does not affect Flags)
memcpy:
mov a,b ;Copy B to A (so as to compare BC with zero)
ora c ;A = A | C (set zero)
jnz loop ;Jump to 'loop:' if the zero-flag is not set.
ret ;Return
Да, на несколько тактов дольше выполняется первая проверка. Принципиально ли это? Если нужно увеличить скорость, можно попробовать развернуть цикл, использовать другой способ копирования. Да и просто проверять не содержимое пары, а отдельно содержимое младшего регистра, и лишь затем делать декремент старшего и его проверку — это даст выигрыш (в среднем) на каждом шаге. Тогда код будет выглядеть чуть иначе:
memcpy:
mov a,b ;Copy register B to register A
ora c ;Bitwise OR of A and C into register A
rz ;Return if the zero-flag is set high.
inr b
loop:
ldax d ;Load A from the address pointed by DE
mov m,a ;Store A into the address pointed by HL
inx d ;Increment DE
inx h ;Increment HL
; dcx b ;Decrement BC (does not affect Flags)
dcr c
jnz loop
drc b
jnz loop
; mov a,b ;Copy B to A (so as to compare BC with zero)
; ora c ;A = A | C (set zero)
; jnz loop ;Jump to 'loop:' if the zero-flag is not set.
ret ;Return
А если серьезно — вызывать функцию копирования нуля байтов странно, особенно в демке. Да, и говорить о масштабах применительно к довольно простой демке для 8080 — тоже.
К сожалению, не знаю, как сделать здесь код более красиво.
А кто предлагает убирать проверки? Проверка как раз стоит в конце цикла.
Не трушный подход к разработке под 8080. Отказаться от ТРЕХ байтов экономии… И ради чего? Да у нас этой памяти завались просто???
Тогда придётся вникать в структуру ФС. Какую ФС вы собираетесь использовать?
Тип ФС в целом тут не играет роли. Тип таблицы разделов — да, пожалуй. Я в них не силен, и предполагаю, что будет обычная таблица разделов, которая принята в DOS была.
MBR-загрузчик выбирает раздел, с которого загрузиться. Если же загрузчик более крутой (типа GRUB), обычно есть возможность выбора раздела, с которого грузиться.
В итоге запускается код из BOOT-сектора выбранного раздела, а тому просто необходимо знать, с какого сектора его раздел начинается. Поэтому BOOT-сектор раздела обычно и содержит этот самый номер сектора.
Хорошо бы ввести сервис типа «жалоба на спам-звонок или сообщение». Ну типа позвонили спамеры, трубку повесил, тут же набрал *SPAM# и нажал «вызов».
Но нет, пусть только самые упорные лезут на специальную страницу, предварительно прослушав сообщение внимательно, чтобы название конторы услышать и запомнить. Да, кстати, не хватает явно кнопочки «попросить спамеров перезвонить и зачитать сообщение заново» для тех, кто пропустил. Тогда уж точно можно будет заявления по форме без ошибок заполнять.
Сразу несколько моментов.
Почему в sp загружается нечетное число? Всё-таки выравнивание… Может, прибавить единицу?
Не делается проверка на поддержку расширенных функций чтения через int 13h, ну да это ладно, надеемся, что на старых компьютерах не будут запускать. Хотя если даже развивать тему и сделать защищенный режим, то запускать можно хоть на 286 в теории, 386 — более вероятно. Тогда однозначно проверка нужна.
И ещё, что касается загрузки… Не лучше ли сделать загрузчик так, чтобы систему можно было запускать на компьютере, где есть и другие ОС? То есть сделать загрузочный сектор с таблицей разделов ИЛИ чтобы он учитывал смещение от начала диска (если загружать его с раздела, а не из MBR).
Вроде бы да, но…
1. Может сработать непонятно из-за чего. Мало радости от моргающего фонаря.
2. Веб-морда вполне подойдет почти любому телефону.
3. Вообще есп8266 может быть точкой доступа, и интернет тогда не нужен. Но нужен телефон с вайфай. Да, не очень удобно, что телефон надо подключать именно к этой точке доступа, согласен.
Ибо не вижу, чтобы что-то дешевело заметно.
Теперь мне стало еще более непонятно, зачем они убрали поиск яндекса, почему вместо яндекса какой-то серси, который все равно перебрасывает на яндекс…
Кто-то может внятно объяснить?
Если добавить в информацию о кадре время на его отрисовку, то можно учесть его. Тогда и кадры будут рисоваться строго через равные промежутки, и музыка будет идти в соответствии с ритмом.
Насколько я понял, возможности использовать таймер для измерения временных промежутков в Микроше нет. Или есть?
Насчет килобайтов — сомневаюсь. Разве что алгоритм использовать другой.
А насчет «место трогать нельзя» — это кто сказал?
;memcpy:
; mov a,b ;Copy register B to register A
; ora c ;Bitwise OR of A and C into register A
; rz ;Return if the zero-flag is set high.
loop:
ldax d ;Load A from the address pointed by DE
mov m,a ;Store A into the address pointed by HL
inx d ;Increment DE
inx h ;Increment HL
dcx b ;Decrement BC (does not affect Flags)
memcpy:
mov a,b ;Copy B to A (so as to compare BC with zero)
ora c ;A = A | C (set zero)
jnz loop ;Jump to 'loop:' if the zero-flag is not set.
ret ;Return
Да, на несколько тактов дольше выполняется первая проверка. Принципиально ли это? Если нужно увеличить скорость, можно попробовать развернуть цикл, использовать другой способ копирования. Да и просто проверять не содержимое пары, а отдельно содержимое младшего регистра, и лишь затем делать декремент старшего и его проверку — это даст выигрыш (в среднем) на каждом шаге. Тогда код будет выглядеть чуть иначе:
memcpy:
mov a,b ;Copy register B to register A
ora c ;Bitwise OR of A and C into register A
rz ;Return if the zero-flag is set high.
inr b
loop:
ldax d ;Load A from the address pointed by DE
mov m,a ;Store A into the address pointed by HL
inx d ;Increment DE
inx h ;Increment HL
; dcx b ;Decrement BC (does not affect Flags)
dcr c
jnz loop
drc b
jnz loop
; mov a,b ;Copy B to A (so as to compare BC with zero)
; ora c ;A = A | C (set zero)
; jnz loop ;Jump to 'loop:' if the zero-flag is not set.
ret ;Return
А если серьезно — вызывать функцию копирования нуля байтов странно, особенно в демке. Да, и говорить о масштабах применительно к довольно простой демке для 8080 — тоже.
К сожалению, не знаю, как сделать здесь код более красиво.
Не трушный подход к разработке под 8080. Отказаться от ТРЕХ байтов экономии… И ради чего? Да у нас этой памяти завались просто???
Тип ФС в целом тут не играет роли. Тип таблицы разделов — да, пожалуй. Я в них не силен, и предполагаю, что будет обычная таблица разделов, которая принята в DOS была.
MBR-загрузчик выбирает раздел, с которого загрузиться. Если же загрузчик более крутой (типа GRUB), обычно есть возможность выбора раздела, с которого грузиться.
В итоге запускается код из BOOT-сектора выбранного раздела, а тому просто необходимо знать, с какого сектора его раздел начинается. Поэтому BOOT-сектор раздела обычно и содержит этот самый номер сектора.
Но нет, пусть только самые упорные лезут на специальную страницу, предварительно прослушав сообщение внимательно, чтобы название конторы услышать и запомнить. Да, кстати, не хватает явно кнопочки «попросить спамеров перезвонить и зачитать сообщение заново» для тех, кто пропустил. Тогда уж точно можно будет заявления по форме без ошибок заполнять.
Почему в sp загружается нечетное число? Всё-таки выравнивание… Может, прибавить единицу?
Не делается проверка на поддержку расширенных функций чтения через int 13h, ну да это ладно, надеемся, что на старых компьютерах не будут запускать. Хотя если даже развивать тему и сделать защищенный режим, то запускать можно хоть на 286 в теории, 386 — более вероятно. Тогда однозначно проверка нужна.
И ещё, что касается загрузки… Не лучше ли сделать загрузчик так, чтобы систему можно было запускать на компьютере, где есть и другие ОС? То есть сделать загрузочный сектор с таблицей разделов ИЛИ чтобы он учитывал смещение от начала диска (если загружать его с раздела, а не из MBR).
1. Может сработать непонятно из-за чего. Мало радости от моргающего фонаря.
2. Веб-морда вполне подойдет почти любому телефону.
3. Вообще есп8266 может быть точкой доступа, и интернет тогда не нужен. Но нужен телефон с вайфай. Да, не очень удобно, что телефон надо подключать именно к этой точке доступа, согласен.