Новое видео по русификации Атари.
https://youtu.be/09_DvlqEtXg
Шрифт защищён от ресета.
Если нужно такое для среды Бейсика, только скажите.
Вид для печати
Новое видео по русификации Атари.
https://youtu.be/09_DvlqEtXg
Шрифт защищён от ресета.
Если нужно такое для среды Бейсика, только скажите.
у меня есть вот такая программа которая подгружает с диска любой фонт, в том числе и русский))
но она на турбобейсике, как на обычный переделать, я не знаю..Цитата:
10 GR.0:POKE 710,1:POKE 709,15:POKE 756,128
20 POKE 65,0:POKE 731,1
30 REM ---------
40 OPEN #1,4,0,"D2:RU2.FNT"
50 BGET #1,32768,1024:CLOSE #1
хотел русифицировать кое-что.
- - - Добавлено - - -
можно её на ассемблере исполнить ?
OMG
а для начала
poke 106,127
gr.0
?
106-RAMTOP вроде.
не грузить же русский шрифт куда угодно.
Насчет файловых операций зри здесь:
http://atariage.com/forums/topic/217...-in-assembler/
сам не проверял, потому что извечная проблема собрать файло на рабочем диске.
Для начала, прилагаю программу руссификации бейсика.
Конечно, только для ЭТОГО доса.
Называется RUSBAS и работает ТОЛЬКО при подключённом бейсике, так как сама выходит из доса в бейсик.
Действия:
1. При подключённом бейсике загрузиться и увидеть READY.
2. Набрать DOS и увидеть D1:
3. Набрать RUSBAS и снова увидеть READY
Можно работать.
Рус - POKE 756,28
Eng - POKE 756,224
ez
- - - Добавлено - - -
Вот та самая программка на Ассемблере. :)
Называется EZFONT (EZ - это я)
Подгружает фонт по запросу и защищается от Бейсика.
Пока в системе бейсик, ничего с ней не произойдёт.
RUS - POKE 756,28
ENG - POKE 756,224
Код:; ezfont program
; For use with BASIC ! ONLY!
; ezfont.com
; Evgeny Zolotarev (c) 2017
.ou ezfont.com
; Atari Equates
RUNAD = $02e0
CHBAS = $02f4
MEMLO = $02e7
WARMST = $08
CARTA = $A000
; CIO equates
; -----------------------------
ICHID = $0340
ICDNO = $0341
ICCOM = $0342
ICSTA = $0343
BFADR = $0344
PTADR = $0346
BFLEN = $0348
ICAX1 = $034a
ICAX2 = $034b
CIOV = $e456
; CIO Commands
COPEN = $03
GTREC = $05 ;Get TEXT Record
GTBYT = $07 ;GeT Byte
PTREC = $09 ;PuT TEXT Record
PTBYT = $0b ;PuT Byte
CCLSE = $0c
CSTAT = $0d
; Constants
; -----------------------------
EOL = $9b
CLR = $7d
IOCB0 = $00
IOCB1 = $10
IOCB2 = $20
OREAD = $04
;
prot = $0700
; GP Macros
; -----------------------------
; Move_Immediate_Byte
; form: mib <byt> <loc>
!!!mib .md
lda #:1
sta :2
.me
; Move_Immediate_Word
; form: miw <wrd> <loc>
!!!miw .md
lda #>:1
sta 1+:2
lda #<:1
sta :2
.me
; ====================
; Main PROG
.or $2000
jmp start
; --------------------
; Runtime DATA
cr .by EOL
buflen = 40
fname .ds buflen
kname .by "K:",EOL
prompt .by CLR,"ENTER D:FONTNAME.FNT TO LOAD...",EOL
csadr = $1c00
cslen = $0400
; ====================
; Runtime CODE
start
; Printing prompt to screen
ldx #IOCB0
miw prompt BFADR,x
miw buflen BFLEN,x
mib PTREC ICCOM,x
jsr CIOV
; Filename Input to buffer
ldx #IOCB0
miw fname BFADR,x
miw buflen BFLEN,x
mib GTREC ICCOM,x
jsr CIOV
; Close 1
ldx #IOCB1
mib CCLSE ICCOM,x
jsr CIOV
; Open 1 4 0 fname
ldx #IOCB1
mib COPEN ICCOM,x
mib OREAD ICAX1,x
mib $00 ICAX2,x
miw fname BFADR,x
jsr CIOV
tya ; If error
bmi finish
; Bget 1 <adr> <len>
ldx #IOCB1
miw csadr BFADR,x
miw cslen BFLEN,x
mib GTBYT ICCOM,x
jsr CIOV
tya ; If error
bmi finish
; Close 1
finish ldx #IOCB1
mib CCLSE ICCOM,x
jsr CIOV
; Protect at $2000
clc
lda MEMLO
adc #<prot
sta MEMLO
lda 1+MEMLO
adc #>prot
sta 1+MEMLO
lda #$00
sta WARMST
jmp CARTA
; ====================
; Setup Run Address
.or RUNAD
.wo start
;
.en
; >>> End Of File <<< ;
Евгений, можешь разъяснить команды ассемблера, что с чем там едят, я не понимаю ничего..
- - - Добавлено - - -
вот это например, как этим пользоваться
https://www.atarimax.com/jindroush.atari.org/aopc.html
в справочнике опкоды 6502 плюс типы адресации
Непосредственная - сложение с числом
Immediate ADC #$44 $69 2 2
Нулевая страница - сложение с содержимым ячейки нулевой страницы(0-255)
Zero Page ADC $44 $65 2 3
Абсолютная индексная на нулевой странице - адрес складывается из регистра Х и нулевой страницы - это и есть операнд
Zero Page,X ADC $44,X $75 2 4
Абсолютная (прямая) - операнд указан в адресе
Absolute ADC $4400 $6D 3 4
Абсолютная индексная - Операнд получен из адреса плюс регистр X/Y
Absolute,X ADC $4400,X $7D 3 4+
Absolute,Y ADC $4400,Y $79 3 4+
Индексно-косвенная на нулевой странице
Indirect,X ADC ($44,X) $61 2 6
Indirect,Y ADC ($44),Y $71 2 5+
http://www.emuverse.ru/wiki/MOS_Tech...B8.D1.86.D1.8B
http://retrocomputer.ru/ICDOCS/6502/FILES/6502.rus.txt
Ну, это очень трудно на словах разъяснить...
Смысл в том, что любая команда представляется в разном виде, в зависимости от материала, с которым работает.
Я к тому, что входящие данные и определяют формат команды.
Это - не панацея!
Сама команда может не воспринимать чуждые ей форматы!
Я это к тому, что программист должен воспринимать команды как их ассемблер воспринимает!
То есть, правильно парсить их!!!
Кроме этого он должен знать ПРАВИЛА.
Некоторые команды - не универсальны и не могут работать со всеми адресами.
Самые универсальные - LD?-ST? они работают со всеми регистрами и операндами.
Это - общая инфо.
Вряд ли, она что-то даёт.
В принципе, способы адресации объясняют ассемблеру, как с данными работать.
1. Непосредственная адресация - говорит, что дано ЧИСЛО!
Если однобайтовое - обработай, если двухбайтовое - обработай за два раза.
2. Абсолютная адресация - говорит, что задан адрес (2 байта), в котором ЧИСЛО (м/б двухбайтовое)!
Надо доступиться! до числа и затем обработать как ранее.
3. ...
4. Нулевая страница - исключение!
Если операнд на нулевой странице, он требует примитивизации обработки!
Бери его и ешь!
Следующего байта НЕ БУДЕТ! (Если речь идёт об адресации.)
Я к тому, что на нулевой странице может быть BYTE или WORD.
ну вот допустим захотел я джойстиком погонять точку по экрану в gr.0, как мне логически рассуждать в ассемблере для написания этой программы ?