Макросы
Макросы
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Выдает список файлов на устройстве DK: (пробовал через rt11.exe patron'a, не пробовал на реальном устройстве)
Взято (с моими сокращениями) из AA-PD6LA-TC_RT-11_System_Macro_Library_Manual_Aug91.pdf
Как я понял - главное IGTDIR, IGTENT глобальные адреса.
Попробовал на эмуляторе ukncbtl - вроде тоже работает. Абсолютно не понимаю как оно может потом работать в разных системах. Там что - call-ы системных функций по одинаковым адресам идут? Если например в фодосе начать пробовать - то-же что-ли сработает? (хотя например было скомпилировано не для него).
Код:.MCALL .PRINT, .EXIT, .FETCH .GLOBL IGTDIR, IGTENT .ENABL LSB START: .FETCH #BUFFER, #DBLK bcs FETERR clr DBLK+2 mov #PGTDIR, R5 call IGTDIR tst R0 bne GTDERR 90$: mov #PGTENT, R5 call IGTENT tst R0 bmi 100$ .PRINT #FILNAM br 90$ 100$: .EXIT FETMSG: .ASCIZ /Fetch error/ .EVEN FETERR: .PRINT #FETMSG .EXIT GTDMSG: .ASCIZ /IGtDir error/ .EVEN GTDERR: .PRINT #GTDMSG .EXIT LIT64.: .WORD 64. LIT0: .WORD 0 PGTENT: .WORD 5 .WORD WORK .WORD ENTRY .WORD -1 .WORD -1 .WORD FILNAM PGTDIR: .WORD 7 .WORD LIT64. .WORD WORK .WORD LIT0 .WORD BUFFER .WORD -1 .WORD DBLK DBLK: .RAD50 "DK " .RAD50 " " .RAD50 " " .RAD50 " " .BLKW 5*4 WORK: .BLKW 64. BUFFER: .BLKW 512. ENTRY: .BLKW 7. FILNAM: .ASCIZ "xxxxxx.xxx" .EVEN .END START
Последний раз редактировалось BlaireCas; 28.02.2020 в 11:54.
S_V_B(28.02.2020)
IGTDIR - джокерный поиск
Как раз сижу изучаю.. сроду не догадался что такая полезная вещь.
Я сразу в дебри полез.., а для файлера больше и не нужно.
Спасибо.
- - - Добавлено - - -
Скорее всего табличка с джампами (при загрузке обновляемая).
Эх.. раскопать бы описание всех "вкусностей" сразу, а-то репа пухнет от просеивания информации.
БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO
Ну и какой тогда ЕМТ у IGTDIR???
А насчет таблички джампов лично наблюдал в мониторе.
От тебя Хунта одно риторическое бухтение.. сказал А говори и Б..., если хочешь кого-то унизить своим самомнением.. делай это аргументировано.. все польза какя будет.
Если ты такой умный должен бы первый сказать.. "Да тут все просто братцы.. нужно делать так...".. а-то залазишь в тему только чтобы пукнуть
- - - Добавлено - - -
Посмотрел в дебаггере IGTDIR-> Call 3562 нет там никаких ЕМТов..
Странно..3562 как так кто положил туда код?
- - - Добавлено - - -
BlaireCas, положи исходник в тему "Программирование УКНЦ", будет весьма полезно.
Последний раз редактировалось S_V_B; 28.02.2020 в 15:45.
БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO
Я и говорю - дети.
IGtDir.mac:
Lookup.macКод:MOV R0,R4 ; save previous SERR/HERR state .LOOKUP R2,R3,IG.DEV(R1) ; LOOKUP the device/file
IGtDir.macКод:.LOOKUP SP ; Lookup specified job/file/device BCC 10$ ; IF successful lookup, preserve value in R0
Код:.SBTTL Read Segment 1 140$: CALL 132$ ; Good LOOKUP - Reset error response 150$: MOV #IG.ID,IG.LFO(R1) ; Indicate file opened. MOV #1,R3 ; Segment number = 1 CALL IG$SEG ; Read segment 1Код:IG$RED: CMP IG.LCH(R1),#255 ; Channel legitimate? BLOS 10$ ; If so, use our .READWКод:; Infernal Read Routine 10$: .READW IG.EMT(R1),IG.LCH(R1),IG.BUF(R1),#512.,R3 BCC 30$ CALL IG$CLO ; Close channel 20$: MOV #E.RDSG,R0 ; Error reading dir segment RETURNА на засыпку (хотя дети уже засыпались) - в RT нет услуг работы с каталогом. И IGtDir - это работа с каталогом для пользовательской программы.Код:BIC #^C1777,R4 ; isolate offset bits BIC #^C76000,R3 ; isolate segment number bits, SWAB R3 ASR R3 ASR R3 ; now THAT's a segment number. MOV R3,R2 ; save a copy CMP R3,#1 ; is it the first one again? BEQ 230$ ; don't bother reading it. CALL IG$SEG ; Read the segment BNE 160$ ; Branch on error
Всё давно описано и есть в документации. Я уж молчу про исходники.
Но здешние обитатели настолько привыкли, что за них всё прочитают в доках, разжуют, положат в рот, ЗАСТАВЯТ проглотить и напишут - что от меня будет только
И
когда сам полезешь в доки и исходники
1.Нормальному человеку не влом подсказать "очевидные" для него вещи.
2.Тут ты не прав не у одного тебя времени не хватает, и выбор либо что-то написать (с подсказкой более опытных товарищей) либо просидеть раскапывая доки.. в итоге забить на все.
3. Думал что форум для того и создан чтобы конструктивно общаться и в итоге делать что-то полезное для всех (а не сидеть в своей теме общаясь сам с собой.. и язвить прохожим).
Поэтому в очередной раз Hunta, убедительно прошу.. если нечего сказать конструктивного.. не пиши в моих темах..
А то что ты там сверху вывалил.. по твоему полезная инфа? Иди лучше в свою тему и пиши сам себе про свою "прелесть"
- - - Добавлено - - -
Огромная просьба к модераторам, убрать всю ересь то что выше до сообщения BlaireCas.
- - - Добавлено - - -
Получается что красиво только в исходнике. На деле все не так красиво.. дырка в коде зачем-то.. с .asect не работает.
Если из "DIR"а выкинуть все лишнее (Магнитные ленты, даты время, форматы и.т.д) и оставить только DIRDK, FETCH и оформить в виде процедуры будет оптимальней. (контроля больше и в коде компактней будет).
БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)