Created
June 1, 2020 20:27
-
-
Save svofski/da44380b6475bc8a69690d6463044820 to your computer and use it in GitHub Desktop.
vector06c with b2m serial over tcp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 🐟 для Вектора-06ц | |
.project comtest.rom | |
.tape v06c-rom | |
rastint equ 38h ; прервывание обратного хода луча | |
.org 100h | |
; стандартная точка входа .rom файла | |
di ; запретить прерывания | |
xra a | |
out 10h ; выключить квазидиск | |
lxi sp, $100 ; инициализировать указатель стека | |
mvi a, 0c9h ; код инструкции RET | |
sta rastint ; инициализировать обработчик RST7 | |
call clrscr ; очистить экран | |
call set_palette; установить палитру | |
; задать позицию вывода текста | |
; столбец 0, строка $f8 (верх экрана) | |
lxi h, $00f8 | |
call gotoxy | |
; вывести строку | |
lxi h, msg | |
call puts | |
mvi a, $30 | |
sta serputsel+1 | |
lxi h, msg1 | |
call serputs | |
mvi a, $32 | |
sta serputsel+1 | |
lxi h, msg2 | |
call serputs | |
di | |
hlt | |
; вывести текст в компот | |
serputs: | |
mov a, m | |
ora a | |
rz | |
serputsel: | |
out $30 | |
inx h | |
jmp serputs | |
msg: | |
db 'HELLO, WORLD!',0 | |
msg1: | |
db 'HELLO, PORT $30 TO TCP 15015',0 | |
msg2: | |
db 'HELLO, PORT $32 TO TCP 15016',0 | |
; | |
; Микро-библиотека для Вектора-06ц | |
; | |
; Область временного хранения SP | |
__savedsp dw 0 | |
; Очистка всей экранной области | |
clrscr | |
di | |
lxi h,0 | |
dad sp | |
shld __savedsp | |
lxi sp, 0 | |
lxi b, 0 | |
lxi d, $1000 | |
_clrscr_1: | |
push b | |
push b | |
push b | |
push b | |
dcx d | |
mov a, d | |
ora e | |
jnz _clrscr_1 | |
lhld __savedsp | |
sphl | |
ret | |
; Программирование палитры | |
set_palette | |
ei | |
hlt | |
mvi a, 88h ; настроить ППИ | |
out 0 | |
mvi a, 255 ; сбросить прокрутку | |
out 03 | |
mvi c, $f ; программирование палитры | |
mvi b, $00 | |
_set_palette_1: | |
mov a,c | |
out 2 | |
mov a, b | |
out $c | |
out $c | |
out $c | |
out $c | |
cma | |
mov b, a | |
dcr c | |
jp _set_palette_1 | |
ret | |
; установить позицию для вывода следующего символа | |
; H = столбец, L = строка ($F8 = верхняя) | |
gotoxy | |
shld _puts_de | |
ret | |
; Вывести 0-терминированую строку в HL на экран | |
puts | |
shld _puts_sptr | |
_puts_1: | |
call _putchar | |
jnz _puts_1 | |
ret | |
_puts_sptr:dw 0 | |
_puts_de: dw 0 | |
; Нарисовать один символ | |
_putchar: | |
lhld _puts_sptr | |
mov a, m | |
ora a | |
rz | |
mov c, a | |
inx h | |
shld _puts_sptr | |
xchg | |
lhld _puts_de | |
inr h | |
shld _puts_de | |
xchg | |
lxi h,0 | |
dad sp | |
shld __savedsp | |
; Найти адрес спрайта символа | |
; bc = (c-32)*8 | |
mov a,c | |
sui 32 | |
mov c, a | |
rlc | |
rlc | |
rlc | |
ani 7 | |
mov b,a | |
mov a,c | |
rlc | |
rlc | |
rlc | |
ani $f8 | |
mov c,a | |
lxi h, _font_table | |
dad b | |
sphl ; sp -> char | |
lxi h, $e000 | |
dad d ; hl -> destination | |
; Выдавить биты на экран | |
pop b\ mov m, c\ dcr l\ mov m, b\ dcr l | |
pop b\ mov m, c\ dcr l\ mov m, b\ dcr l | |
pop b\ mov m, c\ dcr l\ mov m, b\ dcr l | |
pop b\ mov m, c\ dcr l\ mov m, b\ dcr l | |
lhld __savedsp | |
sphl | |
mvi a, 1 | |
ret | |
_font_table: | |
; Font: 8X8!FONT.pf | |
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | |
db 0x30, 0x78, 0x78, 0x30, 0x30, 0x00, 0x30, 0x00 | |
db 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00 | |
db 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00 | |
db 0x30, 0x7C, 0xC0, 0x78, 0x0C, 0xF8, 0x30, 0x00 | |
db 0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00 | |
db 0x38, 0x6C, 0x38, 0x76, 0xDC, 0xCC, 0x76, 0x00 | |
db 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00 | |
db 0x18, 0x30, 0x60, 0x60, 0x60, 0x30, 0x18, 0x00 | |
db 0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, 0x00 | |
db 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00 | |
db 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x00, 0x00 | |
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x60 | |
db 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00 | |
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00 | |
db 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00 | |
db 0x7C, 0xC6, 0xCE, 0xDE, 0xF6, 0xE6, 0x7C, 0x00 | |
db 0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00 | |
db 0x78, 0xCC, 0x0C, 0x38, 0x60, 0xC0, 0xFC, 0x00 | |
db 0x78, 0xCC, 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00 | |
db 0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x0C, 0x00 | |
db 0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, 0x78, 0x00 | |
db 0x38, 0x60, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00 | |
db 0xFC, 0x0C, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00 | |
db 0x78, 0xCC, 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00 | |
db 0x78, 0xCC, 0xCC, 0x7C, 0x0C, 0x18, 0x70, 0x00 | |
db 0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00 | |
db 0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x60 | |
db 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00 | |
db 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00 | |
db 0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60, 0x00 | |
db 0x78, 0xCC, 0x0C, 0x18, 0x30, 0x00, 0x30, 0x00 | |
db 0x7C, 0xC6, 0xDE, 0xDE, 0xDE, 0xC0, 0x78, 0x00 | |
db 0x18, 0x3C, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x00 | |
db 0x7C, 0x66, 0x66, 0x7C, 0x66, 0x66, 0x7C, 0x00 | |
db 0x3C, 0x66, 0xC0, 0xC0, 0xC0, 0x66, 0x3C, 0x00 | |
db 0x78, 0x6C, 0x66, 0x66, 0x66, 0x6C, 0x78, 0x00 | |
db 0x7E, 0x60, 0x60, 0x78, 0x60, 0x60, 0x7E, 0x00 | |
db 0x7E, 0x60, 0x60, 0x78, 0x60, 0x60, 0x60, 0x00 | |
db 0x3C, 0x66, 0xC0, 0xC0, 0xCE, 0x66, 0x3E, 0x00 | |
db 0x66, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00 | |
db 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00 | |
db 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3C, 0x00 | |
db 0x66, 0x66, 0x6C, 0x78, 0x6C, 0x66, 0x66, 0x00 | |
db 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7E, 0x00 | |
db 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00 | |
db 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00 | |
db 0x3C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00 | |
db 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x60, 0x00 | |
db 0x3C, 0x66, 0x66, 0x66, 0x6E, 0x3C, 0x0E, 0x00 | |
db 0x7C, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0x66, 0x00 | |
db 0x3C, 0x66, 0x70, 0x38, 0x0E, 0x66, 0x3C, 0x00 | |
db 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00 | |
db 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00 | |
db 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00 | |
db 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00 | |
db 0x66, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x66, 0x00 | |
db 0x66, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x00 | |
db 0xFE, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xFE, 0x00 | |
db 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x00 | |
db 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00 | |
db 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00 | |
db 0x07, 0x0E, 0x39, 0x63, 0x83, 0x31, 0x1C, 0x07 | |
db 0xC0, 0xE0, 0x38, 0x8C, 0x82, 0x18, 0x70, 0xC0 | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
main.CPUClock=3MHz | |
main.Caption="Vector-06c" | |
main.ff.speed=10 | |
main.ff.keymask[8]=20 | |
main.scale.x=100% | |
main.scale.y=150% | |
main.globalsound=1 | |
main.fullscreen=1280x1024x16 | |
main.fullscreen.scale.x=2 | |
main.fullscreen.scale.y=3 | |
CPU : K580wm80a { | |
debug=cas | |
debug=gate | |
mem=ramdisk | |
port~[00-03]=sys.data | |
port~[04-07]=ext.data | |
port~[08-0B]=mtim.data | |
port[0C-0E]=vid.color | |
port[0F]=port0F | |
port[10]=ramdisk.page | |
port[14]=AY.data | |
port[15]=AY.regno | |
port~[18-1B]=dsk.data | |
port[1C]=dskctl.data[0] | |
port[20]=clock.regno | |
port[21]=clock.data | |
port[30]=com1.data | |
port[32]=com2.data | |
port[50-5F]=hdd.data | |
port[ED]=gate.call | |
rst[7]=vid.irq | |
adjust=4 | |
} | |
com1 : K580ww51 { | |
connect="tcp:15015:127.0.0.1" | |
} | |
com2 : K580ww51 { | |
connect="tcp:15016:127.0.0.1" | |
} | |
port0F : Register { | |
read=ramdisk.port0F | |
write=vid.color | |
} | |
mem1 : Memory { | |
size=10000 | |
} | |
bios : Memory { | |
rom="Vector06c\vector.epr" | |
romselect="Change ROM BIOS" | |
romfiles="Vector BIOS files (*.epr)|*.epr" | |
icon=1 | |
} | |
extrom : Memory { | |
rom="Vector06c\vector.emr" | |
romselect="Change external ROM" | |
romoffset=100 | |
romfiles="ROM files (*.rom)|*.rom" | |
} | |
sys : K580ww55 { | |
portA=kbd.~mask | |
portB=kbd.~data | |
portC[0]=cas.record | |
portC[4]=cas.playback | |
portC[5-7]=kbd.~data2 | |
} | |
ext : K580ww55 { | |
portA=extrom.lsb | |
portB=extrom.data | |
portC[0-6]=extrom.msb | |
} | |
ramdisk : V06c-MemMap { | |
cpustate=cpu.state | |
rom=bios[0000] | |
stdmem=mem1[0000] | |
ramdisk="Vector06c\vector.edd" | |
} | |
kbd : Keyboard { | |
layout="Vector06c\layout.kbd" | |
} | |
vid : V06c-Video { | |
mem=mem1[8000] | |
scroll=sys.portA | |
control=sys.portB | |
ruslat=sys.portC[3] | |
palette.default="80802D2D80802D2D80802D2D80802D2D" | |
} | |
mtim : K580wi53 { | |
clock[0].rate=1/2 | |
clock[1].rate=1/2 | |
clock[2].rate=1/2 | |
gate[0].value=1 | |
gate[1].value=1 | |
gate[2].value=1 | |
} | |
AY : AY-3-8910 { | |
freq=1773400 | |
input=sys.portC[0] | |
input[0]=mtim.out[0] | |
input[1]=mtim.out[1] | |
input[2]=mtim.out[2] | |
} | |
dsk : KR1818wg93 { | |
image[0].file="Vector06c\lines.fdd" | |
image[1].file="Vector06c\stmpro.fdd" | |
drive[0].tooltip="A:" | |
drive[1].tooltip="B:" | |
ext="fdd" | |
vdpb="2800040F0085017F00C00020000800" | |
vdpb.boot="Vector06c\lines.fdd" | |
} | |
dskctl : K580ww55 { | |
portA[0]=dsk.drive[0].~on | |
portA[0]=dsk.drive[1].on | |
portA[2]=dsk.side[0] | |
} | |
cas : tape-recorder { | |
; áåéñèê 2.5 | |
biproc[2B05-2B55]=rk | |
biproc[2B05-2B55].check="C5D50E0057DB01E610" | |
boproc[2B60-2B84]=sp | |
boproc[2B60-2B84].check="C5D5F5570E087A0757" | |
; ìîíèòîð-îòëàä÷èê 3.5 | |
tproc[EDDC-EDE2]=rk | |
tproc[EDDC-EDE2].check="CD1097FB76F3C9" | |
biproc[F840-F889]=rk | |
biproc[F840-F889].check="C5D50E0057DB01E610" | |
boproc[F89B-F8C4]=sp | |
boproc[F89B-F8C4].check="C5D5F5573E0232FCFF" | |
; ëñ-ïàñêàëü 2.1 (èíòåðïðåòàòîð) | |
tproc[2728-272C]=rk | |
tproc[2728-272C].check="CD2C0176F3" | |
tproc[2805-280B]=rk | |
tproc[2805-280B].check="CD2C01FB76F3C9" | |
biproc[0AEC-0B35]=rk | |
biproc[0AEC-0B35].check="C5D50E0057DB01E610" | |
tproc[2646-2648]=rk | |
tproc[2646-2648].check="CDA726" | |
boproc[0B41-0B65]=sp | |
boproc[0B41-0B65].check="C5D5F5570E087A0757" | |
; ýìóëÿòîð 86ÐÊ/Ìèêðîøè | |
biproc[FC31-FC7C]=rk | |
biproc[FC31-FC7C].check="F3C5D50E0057DB01" | |
boproc[FC7E-FCA7]=rk | |
boproc[FC7E-FCA7].check="C5D5F5160879074FE601EE01D300" | |
filter="Vector CAS files (*.cas)|*.cas|RK86 files (*.rk?)|*.rk?" | |
ext="cas" | |
noisefilterfreq=3000 | |
} | |
gate : dosgate { | |
} | |
clock : KR512wi1 { | |
cmos="Vector06c\cmos.dat" | |
} | |
hdd : cf-ide { | |
drive[0].image="Vector06c\vector.hdd" | |
drive[0].geometry=200C5H18S | |
} |
Author
svofski
commented
Jun 1, 2020
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment