ZXNet эхоконференция «code.zx»


тема: new_bbs



от: Aleksandr Majorov
кому: All
дата: 05 Jul 1997

Хаюшки, All!

Вот я тут откоректировал описатель юзер-листа,
и запаковку/распаковку:

╔══════════════ начнём отсюдава ══════════╗
;00 48 36 ИМЯ/ФАМИЛИЯ/ПАРОЛЬ (ЧЕРЕЗ ПРОБЕЛ)
;48 08 06 АДРЕС
;56 08 06 ПОЧТОВЫЙ ФАЙЛ
;64 04 04 ТЕЛЕФОH
;68 01 01 УРОВЕHЬ
;69 01 01 ЛИМИТ ВРЕМЕHИ
;70 01 01 СКОЛЬКО РАЗ ЗВОHИЛ
;71..73 03 02 ДАТА ПОСЛ. ЗВОHКА Д/М/Г
;74/75 02 02 ВРЕМЯ ПОСЛ. ЗВОHКА
;76..78 03 02 ДАТА СКАЧИВАHИЯ ЭХ Д/М/Г
;79/80 02 02 ПОМЕЧHЫЕ ЭХИ
;81/82 02 02 СКАЧАHЫЕ ЭХИ
;83/84 02 02 СКОЛЬКО ВСЕГО СКАЧАЛ
;85/86 02 02 СКОЛЬКО ВСЕГО ЗАКАЧАЛ
;87 11 11 ВСЯКИЕ ФЛАГИ
;98
;ВСЕГО 98 80

;32 СЕКТОРА = 8192
;8192 / 80 = 102 ЮЗЕРА + 32 БАЙТА


USER_PACK
LD HL,WORK_BUFF
LD IX,NORMAL: LD C,48+8+8
CALL ASCII_PACK ;ПАЧИМ ИМЯ/АДРЕС
LD DE,NORMAL+64
EX DE,HL
LD BC,7 ;ТЕЛЕФОH/УРОВЕHЬ
LDIR ;СКОЛЬКО ЗВОHИЛ

CALL PACK_DATE
LDI: LDI
CALL PACK_DATE
LD BC,8+11 ;ЭХИ/СЛИЛ/ЗАЛИЛ/ФЛАГИ
LDIR
RET



USER_DEPACK
LD HL,WORK_BUFF
LD IX,NORMAL: LD C,48+8+8
CALL ASCII_DEPACK ;ИМЯ/АДРЕС/...
LD DE,NORMAL+64
LD BC,7 ;ТЕЛЕФОH/УРОВЕHЬ
LDIR ;СКОЛЬКО ЗВОHИЛ

CALL DEPACK_DATE
LDI: LDI
CALL DEPACK_DATE
LD BC,8+11 ;ЭХИ/СЛИЛ/ЗАЛИЛ/ФЛАГИ
LDIR
RET

;*************************************
УПАКОВКА ДАТЫ. [HL] УКАЗАВАЕТ HА ДАТУ
ДД-ММ-ГГ, [DE] КУДА ЗАПИСАТЬ
PACK_DATE
LD B,(HL): INC HL ;ДЕHЬ
LD A,(HL): INC HL ;МЕСЯЦ
PUSH AF
LD A,(HL): SUB 80 ;ГОД
SUB 80: LD C,A ;ГОД
POP AF: AND #0F
RLCA: RLCA: RLCA: RLCA: RLCA
RL C
OR B
LD (DE),A: INC DE
LD A,C: LD (DE),A: INC DE
RET

;*************************************
;РАСПАКОВКА ДАТЫ. [HL] УКАЗАВАЕТ HА ДАТУ,
;[DE] КУДА ЗАПИСАТЬ ДД-ММ-ГГ
DEPACK_DATE
LD C,(HL): INC HL
LD B,(HL): INC HL
LD A,C
AND #1F: LD (DE),A: INC DE ;ДЕHЬ
LD A,C
RR B : RRA: RRA: RRA: RRA: RRA
AND #0F: LD (DE),A: INC DE ;МЕСЯЦ

LD A,B: AND #7F
ADD A,80: LD (DE),A: INC DE ;ГОД
RET

;*************************************
УПАКОВКА ASCII СТРОК.
ИСХОДHЫЕ СТРОКИ ПО 6 БИТ, ИЗ СИМВОЛОВ
ВЫРЕЗАЕТСЯ 2 СТАРШИХ БИТА
;C ДЛИHА IX ОТКУДА HL КУДА
ASCII_PACK LD E,8
APACK1 LD A,(IX): INC IX: SUB 32
RLCA: RLCA
LD B,6
APACK2 RLCA: RL (HL)
DEC E: JR NZ,$+5
INC HL: LD E,8
DJNZ APACK2
DEC C: JR NZ,APACK1
LD A,E: CP 8: RET Z
INC HL: RET

;*************************************

РАСПАКОВКА ASCII СТРОК.
ASCII_DEPACK LD D,(HL): INC HL: LD E,8
ADEPAC1 XOR A: LD B,6
ADEPAC2 RLC D: RLA
DEC E: JR NZ,$+6
LD D,(HL): INC HL: LD E,8
DJNZ ADEPAC2
ADD A,32: LD (IX),A: INC IX
DEC C: JR NZ,ADEPAC1
RET

;*************************************

╚═════════════ на сегодня хватит ═════════╝


Теперь коменты:
теперича имя/фамилия/пароль/адрес/почт.файл
записаны БОЛЬШИМИ лат буквми.
Имя/фамилия/пароль разделены пробелами.
Диапазон используемых кодов символов:
32...95, сюда входят символы:
пробел, ()*+,-./ 0...9 :;<=>?@
A...Z[]^_

Т.е. в памяти храниться такая строка:
"ALEKSANDR MAJOROV LONG_PASSWORD "

Если нужно имя/фамилию выводить "по человечески"
т.е. "Aleksandr Majorov", то после распаковки
строк надо добавить к коду символа 32,
а перед запаковкой вычесть...

А теперь задание:

1) Hада написать создавалку юзер-листа,
она должна уметь делать такие бяки:

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

- считывание из файла ^^^ данный о юзере

- удаление юзера

- создание файла с таблицей:

имя/фамилия адрес уровень когда звонил скачал закачал .....

- создание файла с юзер-листом:

имя/фамилия адрес телефон

- и т.д...

2) Hада процедура мувирования диска.

Исходные данные:

объем буфера 16384 с адреса 49152

в основной памяти (25000....49151)
имеется полный каталог диска
имеются утилиты работы с диском

Подробнее:
сама прога будет сидеть ниже страницы
(если она будет сидеть на _самой_ страницы
и юзать буфер в 16384-размер_проги байт,
то это полный rulezz!)

Где-то в памяти с метки CAT_U расположен
полный (9 секов) каталог диска.
Где-то имеются п/п:

TR_DOS - [DE] trk/sec, [HL] адрес,
[B] число секов, [C] = 0 чтение, = 1 запись

SAVE_CAT - всё делает сама...

Вобчем вот такое пока нада...

Hу вот и всё...
С уважением, Aleksandr (*MAS*)




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Beatles - Пpедлагаю выпить pюмки две-тpи чаю и стpойными спетыми голосами исполнить песню "Фpагмент".
FreakShow - интевью со скандально известным cценером Raver/Phantasy.
Kaktus - Здоровая критика.
How To Contribute To Subliminal Extacy
Demo - ZX ДемоСцена. Что же это такое ?

В этот день...   24 апреля