Changes for page API контроллеров AZ®
Last modified by Max on 2025/03/02 15:18
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -480,49 +480,49 @@ 480 480 {{code language="assembler"}} 481 481 ;.................................. 482 482 483 -WrBuf=016; Symbolicnameof the command483 +WrBuf=016; Символическое наименование команды 484 484 485 -; Beforewriting,youneedtoperformthesameactionsas in486 -; pp. 3.1.-3.3.Usually,thisisthesameprogram,487 -; justafterpoint3.3.acheckis performed"What488 -; is required:readingorwriting?"andabranch is made to the489 -; readingorwritingprogram.485 +; Перед записью нужно выполнить те же действия, что и в 486 +; пп. 3.1.-3.3. Обычно, это одна и та же программа, 487 +; просто после пункта 3.3. выполняется проверка "Что 488 +; требуется: чтение или запись?" и разветвление на 489 +; программу чтения или записи. 490 490 491 -; Afterthefragmentinpoint3.3.,theCSRaddress492 -; (177220) remains in R3.WewillassumethatR2containstheaddress in the CPU493 -; memorywheretheblocktobewritten is located.494 -; Theprogramforobtainingthisaddress is not shown.491 +; После фрагмента в п. 3.3. в R3 остался адрес CSR 492 +; (177220). Будем считать, что в R2 находится адрес в 493 +; памяти ЦП, где находится блок, подлежащий записи. 494 +; Программа получения этого адреса не показана. 495 495 496 - MOV #400,R1; Preparing the counter496 + MOV #400,R1; Готовим счетчик 497 497 498 - MOV #WrBuf,(R3)+; Let'sforwardthe command to theCSRand499 - ;switchtheaddressinR3to500 -; DR 498 + MOV #WrBuf,(R3)+; Перешлем команду в CSR и 499 + ; переключим адрес в R3 на 500 + ; DR 501 501 502 -4$: MOV (R2)+,@R3; Let'sforward the next word503 -; data504 - SOB R1,4$; andrepeatthis256times502 +4$: MOV (R2)+,@R3; Перешлем очередное слово 503 + ; данных 504 + SOB R1,4$; и повторим это 256 раз 505 505 ;.................................. 506 506 {{/code}} 507 507 508 -== 017: Getramdisk size,large==508 +== **017: Получить размер псевдодиска, большой** == 509 509 510 - Therearetwocommandstoget the size of a pseudo-disk,i.e.theAZnfile-imagemountedonthe selected pseudo-drive.511 -\\ IftheOSbeing used(oraprogramworkingwithdiskswithout an OS)canworkwithlarge(morethan32M)disks,youshouldusethecommandwith the code017.Thesequence of actions:resetthecontroller(p. 3.1),selectthedrive(p. 3.2)andsendthecode017to the CSR,andthen,withoutanywaiting,readfromDRfirstthe lower word,andthenthehigherwordofthesizeofthe selected drive(image file).512 -\\ IftheOSyouareusingcannotworkwithdiskslarger than32M(RT-11),youshouldusethe007command-getthepseudo-disksizewithalimit of up to32M.Thesteps are similar:resetthe controller,selectthe disk,sendthe007 code to theCSRandreade wordofthepseudo-disksize fromDR.Ifthesizeoftheimagefilemountedontheselectedpseudo-driveis larger than65534blocks,thecontrollerreturnsthenumber65534instead of this "large" size.Weremindyouthat the number65535isusedinsomeplacesforspecialpurposesandcannotbe the disk size.513 -\\ Wealsoremindyouthatiftheimagefileis not mounted on this drive,thesequenceofactionswill not work(command001selectdevice)andtheprogramexecutionwillsimplynotreachthis point.Therefore,thesecommandsdonotprovidefor errors.514 -\\ Exampleofaprogramwith large disks510 +Есть две команды получения размера псевдодиска, т.е. смонтированного на выбранный псевдопривод AZn файл-образа. 511 +\\Если используемая ОС (или программа, работающая с дисками без ОС) умеет работать с большими (больше 32М) дисками, следует пользоваться командой с кодом 017. Последовательность действий: сбросить контроллер (п. 3.1), выбрать накопитель (п. 3.2) и переслать в CSR код 017, а затем, без каких-либо ожиданий, считать из DR сначала младшее, и следом за ним старшее слово размера выбранного накопителя (файл-образа). 512 +\\Если используемая ОС не умеет работать с дисками бОльшими, чем 32М (RT-11), следует пользоваться командой 007 - получить размер псевдодиска с ограничением до 32М. Действия похожие: сбрасываем контроллер, выбираем диск, посылаем в CSR код [[007>>doc:||anchor="H007:41F43E43B44344743844244C44043043743C43544043F44143543243443E43443844143A430"]] и считываем из DR одно слово размера псевдодиска. Если размер файл-образа, смонтированного на выбранный псевдопривод, больше 65534 блоков, вместо этого "большого" размера, контроллер возвращает число 65534. Напоминаем, что число 65535 кое-где используется в специальных целях и не может быть размером диска. 513 +\\Также напоминаем, что если на этот накопитель не смонтирован файл-образ, последовательность действий не пройдет (команда 001 выбор устройства) и исполнение программы до этого места просто не дойдет. Поэтому ошибок у этих команд не предусмотрено. 514 +\\Пример программы с большими дисками 515 515 516 516 {{code language="assembler"}} 517 517 ;...................................... 518 518 519 -GetBig=017; Getthe"big"disksize519 +GetBig=017; Получить "большой" размер диска 520 520 521 -; Fromfragment3.2 (diskselection)wehaveinR3522 -; DR address(177222)521 +; От фрагмента 3.2 (выбор диска) у нас в R3 остался 522 +; адрес DR (177222) 523 523 524 - MOV #GetBig,-(R3); sendthe command525 - TST (R3)+; returntheaddressinR3backtoDR524 + MOV #GetBig,-(R3); пошлем команду 525 + TST (R3)+; вернем адрес в R3 назад, на DR 526 526 MOV @R3,BigSiz 527 527 MOV @R3,BigSiz+2 528 528 ;......................................