Solid C - компилятор Си для Спринтера

Компьютер "Спринтер" http://sprinter.nedopc.org

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re:

Post by Shaos »

Vasil Ivanov wrote:
dhau wrote:
Shaos wrote:И еще вопрос - в каком виде и для каких систем существует "фирменная" версия SOLID C и кто ее автор?
SOLiD - это ник Егора Вознесенского. Он был отцом-основателем группы Novatec MSX. Он написал SOLiD C с нуля, используя совместимый синтакс и форматы обьектных файлов.
У него можно получить сорцы SOLID C или это глухое дело ?.
Вот наткнулся https://www.msx.org/forum/msx-talk/development/state-art-c-programming-msx
By msxegor
Master (183)
21-03-2014, 14:57

Hi! There is also Solid C that was developed by me a while ago.
It is mostly MSX-C compatible, but knows of Z80: uses 16-bit subtraction, index registers and bit commands.
Standard library was written in assembly and highly optimal; supports DOS-1 and DOS-2 from the box.
Compiler was used by some of my friends here in russia to code game engines, so some graphics is there in libraries.
Do not have it currently with me (I'm in the office now) but will look for something for you to play with later on weekend.

By msxegor
Master (183)
25-03-2014, 09:35

I do remember some problems with char-to-int translation in early versions of SOLID C and I definitely fixed them. Unfortunately I do not know if this version is fixed Sad I lost almost everything when my MSX (state of the art - desktop Yamaha YIS-805 with 11.5 MHz CPU, 1 meg of RAM, harddisk and modem) was stolen in 1999. I tried to restore compiler from bits of sources and disassembled executives in 2004 or so, and I have SOLID C version 2.00 somewhere in archives on my PC. Did a bit of optimization there too.

By Manuel
Ascended (17511)
16-02-2015, 18:48

Unfortunately, Egor passed away last year...

Ref: http://www.msx.org/forum/msx-talk/hardware/beer-ide-bios-19rc1-source-code-wanted
Тема на пкзх: https://zx-pk.ru/threads/23622-umer-egor-voznesenskij-%28solid%29.html
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Solid C - компилятор Си для Спринтера

Post by Shaos »

Нашёл пакет багфиксов CLIB для Солида от какого-то японца - в доке он указывает текст лицензии, который он получил в переписке от Егора:
SOLID C is freeware, and you may use it for any purpose.
You may use it for development of ANY software (including
commercial products). SOLID C cannot be sold.
т.е. использовать можно, но продавать нельзя

P.S. Найти бы вот эти архивы: sc10dem.arj, sclib98.arj
Ну и до кучи: zdsource.arj (исодники его дизассемблера для MSX)


P.P.S. Вот пример из веб-архива как писать функции с переменным количеством аргументов на Solid C:

Code: Select all

int sample(.);

int sample(nargs,args)
int nargs;
int args;
{
	int i,*p;
	
	for (i = 0,p = &args;i < nargs;i++){
		printf("Parameter No.%d %d\n",i+1,*p);
		p++;
	}
}
https://web.archive.org/web/20041201151034/http://homepage3.nifty.com/Tatsu_syo/TMR/SOLIDC.html
Google Translate wrote: Максимальное количество аргументов, которое может быть передано в функцию с переменным параметром, равно 6, и если оно превышает 7, компилятор не будет генерировать нормальный код.
Проверил на Спринтере - у нас такого ограничения НЕТУ - всё работает как надо и с 10 аргументами!!!

P.P.P.S. Оттуда же - при указании extern объявления массива надо обязательно указывать его размер:

Code: Select all

extern char buf []; /* Ошибка возникает из-за того, что размер массива не объявлен */

char buf [128];
////////////////////////////////////////////////////
extern char buf [128];

char buf [128];
Тип char всегда беззнаковый, приставки signed и unsigned для char игнорируются.

Первые 3 аргумента функции передаются через регистры, а остальные - через стек:

Code: Select all

HL = 0001H (если int) или A=01H (если char)
DE = 0041H (если char, то используется только младший байт)
BC = 0FFFDH (если char, то используется только младший байт)
(SP + 2) = 0F0H
(SP + 3) = 0FBH
и т.д.
Возврат данных через A для char или через HL для int:

Code: Select all

cseg ; указывает компоновщику, что это программа.
PUBLIC func_ ; имя функции + '_'

func_:
   ld hl, 0
   ret
В случае функции с переменным количеством аргументов аргументы всегда передаются через стек, как в MSX-C, а количество задаётся в HL:

Code: Select all

sub ((short int) 1, 'A', (unsigned short int) -3, (char *) 0xfbf0);

превращается в

(SP + 2) 01H
(SP + 3) 00H
(SP + 4) 41H
(SP + 5) Неопределенный
(SP + 6) FDH
(SP + 7) FFH
(SP + 8) 0F0H
(SP + 9) 0FBH
Как установить ассемберный код в конкретные адреса:

Code: Select all

    aseg; установить в абсолютный режим
    org 4000H; Разместите следующие программы после 4000H

intprog:
    di
    xor a
    ld (intflag), a
    ei
    ret

    cseg; Код относительного режима отсюда
$MEMRY - начальный адрес кучи
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Solid C - компилятор Си для Спринтера

Post by Shaos »

Написал универсальный батник SC.BAT, с помощью которого можно компилировать любые программы, сосотящие из одного исходного файла с расширением .C и находящиеся в каком-то определённом каталоге (в данном случае C:\SOLID\EXAMPLES) путём записи в шелле SC.BAT HELLO (где HELLO имя программы для сборки - HELLO.C которая в дальнейшем превратится в HELLO.EXE):

Code: Select all

set PROG=%1
set PREFIX=C:\SOLID\EXAMPLES
REM SolidC EXE files must be in PATH on disk C!
cls 2
del %PROG%.exe
cc1 -m %PREFIX%\%PROG%
cc2 %PREFIX%\%PROG%
as %PREFIX%\%PROG%
REM LD filename length is limited to 12 characters!
%PREFIX%\ld %PROG%,clib/l/gXMAIN /x
del %PROG%.tmc
del %PROG%.rel
del %PROG%.asm
LD.EXE и CLIB.IRL должны лежать в том же каталоге вместе с исходниками (т.к. LD.EXE пока не умеет работать с длинными путями - имена входных файлов ограничены 12 символами), а CC1.EXE, CC2.EXE и AS.EXE (вместе с каталогом INCLUDE) должны находиться в путях (PATH), однако обязательно, чтобы на том же самом диске т.к. DSS не умеет нормально запускать программы с одного диска и давать им параметром путь к файлу с другого диска - после этого диск пропадает до ребута...

P.S. Этот батник для шелла, а в FN пока так работать не будет - FN не умеет запускать BAT файлы из командной строки где параметры пишем - чтобы пускаться из панели FN надо в батнике вместо %1 написать имя программы, например HELLO (можно также скопировать SC.BAT в HELLO.BAT и прописать в новом файле имя программы для сборки).
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Solid C - компилятор Си для Спринтера

Post by Shaos »

Shaos wrote:P.S. Найти бы вот эти архивы: sc10dem.arj, sclib98.arj
Архивы нашлись - спасибо Василию Иванову, который скинул архив с набором оригинальных дистров солида с отдельными патчами и другими японскими штуками :kruto:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Solid C - компилятор Си для Спринтера

Post by Shaos »

У меня лично планы такие на Солид:
1) написать пре-препроцессор (можно взять за основу CPPPP из архива, что Василий в телегу скинул), который бы преобразовывал ANSI C в K&R, а также комменты преобразовывал из C++ в С стиль (уже есть в cpppp), если надо UNIX окончания переводил в DOS, если есть русский UTF8 переводил бы в альтернативную кодировку доса, может какие-то простые C++ вещи бы мог превращать в понятный для солида вид;
2) починить LD.EXE чтобы мог работать с длинными путями;
3) сделать утилиту MAKE для Спринтера;
4) сделать собиралку CLIB.IRL на Спринтере (используя MAKE, сделанный в предыдущем пункте, а также написанием собственной утилиты MX, которая режет исходники на модули);
5) написать оптимизатор (по типу как для некоторых других 8-битных компилей были), который бы шёл по асмовскому тексту и преобразовывал бы некоторые вещи для скорости, хотя я смотрю там вроде и так всё более менее оптимально - например OPTD1.COM (из того же архива от Василия) нашёл в результате компилирования LZH3.C размером 2.5 тыщи строк только несущественные мелочи:

Code: Select all

0a1
> ; Code optimized with XelaSoft's code optimizer version 1.1
2045,2046c2046
< 	call	update_
< 	ret
---
> 	jp	update_	; -optimized-
2076,2077c2076
< 	call	Putcode_
< 	ret
---
> 	jp	Putcode_	; -optimized-
2088,2089c2087
< 	call	putc_
< 	ret
---
> 	jp	putc_	; -optimized-
2397,2398c2395
< 	call	EncodeEnd_
< 	ret
---
> 	jp	EncodeEnd_	; -optimized-
---
> 
> ; # BC load groups replaced: 0
> ; # DE load groups replaced: 0
> ; # EX DE,HL pairs removed: 0
> ; # call/ret pairs replaced: 4
> ; # in/out instr. used: 0
> ; # shift instructions replaced 0
P.S. А вообще "интеллектуальный" оптимайзер может разворачивать циклы при необходимости и вставлять тела небольших подпрограмм вместо call (видимо ещё надо и профайлер делать, чтобы узнать какие части кода часто вызываются и выполняются дольше всего)

P.P.S. В коде солида вот такие штуки попадаются:

Code: Select all

	ex    de,hl
	ld	a,e
	sub	c
	ld	c,a
	ld	a,d
	sbc	a,b
	ld	b,a
	ld	l,c
	ld	h,b
которые можно заменить на:

Code: Select all

       or a
       sbc hl,bc
и даже такое можно встретить:

Code: Select all

       ld b,a ; можно выкинуть
       ld b,c
по сути можно проанализировать операции с регистрами по всей длине программы и убрать лишние копирования в регистры, которые далее по коду перетираются
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Solid C - компилятор Си для Спринтера

Post by Shaos »

Заскриншотил вывод солидовских утилит без параметров в своём эмуле Спринтера - так хоть видно какие они параметры могут принимать:
Zpring-CC1.gif
Zpring-CC2.gif
Zpring-AS.gif
Zpring-LD.gif
ну и до кучи:
Zpring-OL.gif
P.S. при печати помощи похоже табуляция не обрабатывается - надо починить эмулятор
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Solid C - компилятор Си для Спринтера

Post by Shaos »

Научил свой эмуль нормально пускать LD.EXE с параметрами :mrgreen:
Zpring-LD-OK.gif
P.S. Увидел, что для CC1 в хелпе есть опция

Code: Select all

-k      Karnighan && Ritchie compatability
Значит ли это, что оригинальный SolidC всё таки был ANSI?
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Solid C - компилятор Си для Спринтера

Post by Shaos »

Дизассемблировал загрузчик из LD.EXE

 LD.ASM

Code: Select all

; Disassembled LD.EXE from Solid C for Sprinter

  ORG   0A400h-512

;EXE-file header:
        dw 5845h     ; EXE Signature
        db 45h       ; Reserved (EXE type)
        db 00h       ; Version of EXE file
        dw 0200h     ; Code offset
        dw 0000h
        dw 0280h     ; Primary loader size or 0 (no primary loader)
        dw 0000h     ; Reserved
        dw 0000h     ; Reserved
        dw 0000h     ; Reserved
        dw START     ; Loading address
        dw START     ; Starting address (register PC)
        dw 0BF00h    ; Stack address (register SP)
        ds 490       ; Reserved

PORT_PAGE0	equ	082h
PORT_PAGE1	equ	0A2h
PORT_PAGE2	equ	0C2h
PORT_PAGE3	equ	0E2h

PORT_Y		equ	089h

;code of program

START:

	push   ix ; push pointer to command line arguments
	; K_CLEAR (Flush the console input buffer and execute other function) - function #31
	ld     bc, 03135h
	rst    10h
	; SYSTIME (Return the current system time and date)
	ld     c, 021h
	rst    10h
; Output:
; D - day [1..31]
; E - month [1..12]
; IX - year [0000..1999.2000..9999]
; H - hour [0..23]
; L - minute [0..59]
; B - second [0..59]
; C - day of week [1..7]
	ld     a, d
	ld     (A4CD), a
	ld     a, e
	ld     (A4CE), a
	ld     (A4CF), ix
	pop    ix ; pop pointer to command line arguments
	in     a, (PORT_PAGE0)
	ld     (A4C5), a
	in     a, (PORT_PAGE1)
	ld     (A4CB), a
	in     a, (PORT_PAGE3)
	ld     (A4CC), a
	in     a, (PORT_Y)
	ld     (A4CA), a
	ld     (LARGS+1), ix
	ld     a, (ix-3)
	ld     (A4C3), a
	ld     hl, msg
	; PCHARS (Write the null-terminated string pointed to by string directly to the console)
	ld     c, 05ch
	rst    10h
	; GETMEM (Allocate a memory block)
	ld     bc, 033dh ; 3 pages
	rst    10h
	jr     nc, NOERR1
	; ERR1 (can't allocate memory)
	ld     a, (A4C3)
	; CLOSE (Close file)
	ld     c, 012h
	rst    10h
	ld     hl, err1
LEND:	; PCHARS (Write the null-terminated string pointed to by string directly to the console)
	ld     c, 05ch
	rst    10h
	; EXIT (Terminate a program)
	ld     bc, 0ff41h ; exit code FF
	rst    10h
NOERR1:	ld     (A4C4), a
	ld     hl, A4C6
	; EMM_FN5 Get list of physical page numbers
	ld     c, 0c5h
	rst    8 ; BIOS
	ld     a, (A4C6) ; page A
	out    (PORT_PAGE3), a
	; clean window 3 (page A) <<< TODO: use accelerator
	ld     hl, 0c000h
LOOP1:	xor    a
	ld     (hl), a
	inc    hl
	or     h
	jr     nz, LOOP1
	ld     hl, 04dedh   ; ???
	ld     (0c038h), hl ; ???
	ld     a, (A4C8) ; page C
	out    (PORT_PAGE3), a
	ld     hl, 0c000h
	ld     de, 01b0ah ; byte count <<< TODO: read all
	ld     a, (A4C3)
	; READ (Read data from a file)
	ld     c, 013h
	rst    10h
	jp     c, LERR2
	ld     a, (A4C3)
	; CLOSE (Close file)
	ld     c, 012h
	rst    10h
	di
	ld     a, 0c0h
	out    (PORT_Y), a
	ld     a, (A4C7) ; page B
	out    (PORT_PAGE1), a
	ld     hl, 0c000h
	ld     de, 04100h
	call   DECODE
	ld     a, (A4C6) ; page A
	out    (PORT_PAGE0), a
	ld     hl, A4C4
	ld     de, 06d39h ; move 13 variables there
	ld     bc, 13
	ldir
LARGS:	ld     hl, 0 ; at this point here will be a pointer to command line arguments (#A380)
	jp     04100h

LERR2:	ld     a, (A4C4)
	; FREEMEM (Deallocate a memory block that was previously allocated by GETMEM)
	ld     c, 03eh
	rst    10h
	ld     a, (A4C3)
	; CLOSE (Close file)
	ld     c, 012h
	rst    10h
	ld     hl, err2
	jp     LEND

A4C3    db #00 ; file handle
A4C4    db #FF ; memory handle
A4C5    db #FF ; old page0
A4C6    db #FF ; Physical identifier of page A
A4C7    db #FF ; Physical identifier of page B
A4C8    db #FF ; Physical identifier of page C
A4C9    db #FF
A4CA    db #FF ; old port_y
A4CB    db #FF ; old page1
A4CC    db #FF ; old page3
A4CD    db #00 ; day
A4CE    db #00 ; month
A4CF    dw #0000 ; year

msg	db	13,10,"SOLID Linkage Editor  Version 0.04b   Ported by Vasil Ivanov"
	db	13,10,"Based on linkage editor v4.60  (c) 1997, SOLiD Inc.",13,10,0
err1	db	"Not enough memory to load program !",13,10,0
err2	db	"Disk loading error !",13,10,0

DECODE:
;UnHrust		di
	ld	ix,-12
	add	ix,sp
	push	de
	ld	sp,hl
	pop	bc
	ex	de,hl
	pop	bc
	dec	bc
	add	hl,bc
	ex	de,hl
	pop	bc
	dec	bc
	add	hl,bc
	sbc	hl,de
	add	hl,de
	jr	c,loc1
	ld	d,h
	ld	e,l
loc1:	lddr
	ex	de,hl
	ld	d,(ix+11)
	ld	e,(ix+10)
	ld	sp,hl
	pop	hl
	pop	hl
	pop	hl
	ld	b,6
loc2:	dec	sp
	pop	af
	ld	(ix+6),a
	inc	ix
	djnz	loc2
	exx
	ld	d,0BFh
	ld	bc,1010h
	pop	hl
loc3:	dec	sp
	pop	af
	exx
loc4:	ld	(de),a
	inc	de
loc5:	exx
loc6:	add	hl,hl
	djnz	loc7
	pop	hl
	ld	b,c
loc7:	jr	c,loc3
	ld	e,1
loc8:	ld	a,80h
loc9:	add	hl,hl
	djnz	loc10
	pop	hl
	ld	b,c
loc10:	rla
	jr	c,loc9
	cp	3
	jr	c,loc11
	add	a,e
	ld	e,a
	xor	c
	jr	nz,loc8
loc11:	add	a,e
	cp	4
	jr	z,loc26
	adc	a,0FFh
	cp	2
	exx
loc12:	ld	c,a
loc13:	exx
	ld	a,0BFh
	jr	c,loc17
loc14:	add	hl,hl
	djnz	loc15
	pop	hl
	ld	b,c
loc15:	rla
	jr	c,loc14
	jr	z,loc16
	inc	a
	add	a,d
	jr	nc,loc18
	sub	d
loc16:	inc	a
	jr	nz,loc20
	ld	a,0EFh
loc17:	rrca
	cp	a
loc18:	add	hl,hl
	djnz	loc19
	pop	hl
	ld	b,c
loc19:	rla
	jr	c,loc18
loc20:	exx
	ld	h,0FFh
	jr	z,loc21
	ld	h,a
	dec	sp
	inc	a
	jr	z,loc24
	pop	af
loc21:	ld	l,a
	add	hl,de
	ldir
loc22:	jr	loc5
	;
loc23:	exx
	rrc	d
	jr	loc6
	;
loc24:	pop	af
	cp	0E0h
	jr	c,loc21
	rlca
	xor	c
	inc	a
	jr	z,loc23
	sub	10h
loc25:	ld	l,a
	ld	c,a
	ld	h,0FFh
	add	hl,de
	ldi
	dec	sp
	pop	af
	ld	(de),a
	inc	hl
	inc	de
	ld	a,(hl)
	jr	loc4
	;
loc26:	ld	a,80h
loc27:	add	hl,hl
	djnz	loc28
	pop	hl
	ld	b,c
loc28:	adc	a,a
	jr	nz,loc31
	jr	c,loc27
	ld	a,0FCh
	jr	loc32
	;
loc29:	dec	sp
	pop	bc
	ld	c,b
	ld	b,a
	ccf
	jr	loc13
	;
loc30:	cp	0Fh
	jr	c,loc29
	jr	nz,loc12
	add	a,0F4h
	ld	sp,ix
	jr	loc34
	;
loc31:	sbc	a,a
	ld	a,0EFh
loc32:	add	hl,hl
	djnz	loc33
	pop	hl
	ld	b,c
loc33:	rla
	jr	c,loc32
	exx
	jr	nz,loc25
	bit	7,a
	jr	z,loc30
	sub	0EAh
loc34:	ex	de,hl
loc35:	pop	de
	ld	(hl),e
	inc	hl
	ld	(hl),d
	inc	hl
	dec	a
	jr	nz,loc35
	ex	de,hl
	jr	nc,loc22
	ret

        INCBIN "ld_compr.bin"

Теперь надо разобрать ld_compr.bin - это 6922 байта, сжатые хрустом (депакер ещё 252 байта занимает) - в развёрнутом виде этот блок кода занимает 12422 байта, но там есть области, заполненные нулями - см. приаттаченный архив cо сжатым и расжатым файлом (а также с вышеприведённым исходником - уже сейчас это всё можно собрать с помошью zmac 1.33 и получить точную копию LD.EXE)
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Solid C - компилятор Си для Спринтера

Post by Shaos »

Василий в телеге выложил свои сырцы LD (дизасм солидовского LD с дописанными вещами для Спринтера в частности поддержка сборки в EXE и в DLL) - теперь повеселее дело пойдёт :)

Также Sayman подогнал исходники make для MSX - написано в 1995 году на MSX-C т.е. теоретически должно быть легко портируемо под Солид: https://hansotten.file-hunter.com/software/msx-c/
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Solid C - компилятор Си для Спринтера

Post by Shaos »

Вот по быстрому попробовал написать графическую программку на солиде в видеорежиме 0x82 (640x256 16 цветов), которая использует ANTONFNT.DLL для вывода текста шрифтом из FN:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
RomanRom2
Writer
Posts: 21
Joined: 02 Dec 2020 14:53

Re: Solid C - компилятор Си для Спринтера

Post by RomanRom2 »

сколько на сколько строк и символов получается таким текстом?
так то можно в средствах разработки какой то редактор запилить, IDE, когда большое разрешение :)
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Solid C - компилятор Си для Спринтера

Post by Shaos »

Шрифт тут пропорциональный по горизонтали (точно такой же как в FN), а по высоте - на картинке строка 8 пикселов т.е. 32 строки

Ещё есть либа FNAPI выпущенная в исходниках в августе 2002 года - там к шрифту ещё добавлены контролы из FN - можно тоже в DLL завернуть
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Solid C - компилятор Си для Спринтера

Post by Shaos »

Вот сменил палитру на EGA-шную:
solidc-antonfnt-ega.jpg
Правда там цвет #00 вместо невидимого чёрным по чёрному сделался ярко-белым по чёрному - видимо какая-то внутренняя логика либы - если начинать с любого другого цвета, то всё работает, даже #00 который идёт не первым (будет реально чёрным по чёрному - я проверил)
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
RomanRom2
Writer
Posts: 21
Joined: 02 Dec 2020 14:53

Re: Solid C - компилятор Си для Спринтера

Post by RomanRom2 »

Shaos wrote:Шрифт тут пропорциональный по горизонтали (точно такой же как в FN), а по высоте - на картинке строка 8 пикселов т.е. 32 строки
я так и не понял, какое разрешение в знакоместах то?
32 строки, ок. а символов в строке сколько?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Solid C - компилятор Си для Спринтера

Post by Shaos »

RomanRom2 wrote:
Shaos wrote:Шрифт тут пропорциональный по горизонтали (точно такой же как в FN), а по высоте - на картинке строка 8 пикселов т.е. 32 строки
я так и не понял, какое разрешение в знакоместах то?
32 строки, ок. а символов в строке сколько?
Ну дык пропорциональный шрифт ведь - если всё написать буковками i то влезет дофига, а если W, то не очень :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net