100 / DIVIDE ROUTINE. 110 120 DIVIDE, .-. /DIVIDE ROUTINE 130 DCA REM /SAVE IN REMAINDER 140 DCA QUO /CLEAR QUOTIENT 150 TAD REM /GET IT BACK 160 STL CIA /INVERT 170 SKP /DON'T FIRST TIME 180 DVLOOP, ISZ QUO /BUMP UP QUOTIENT 190 TAD I DIVIDE /ADD ON ARGUMENT 200 SNA SZL /UNDERFLOW? 210 JMP DVLOOP /NO, KEEP GOING 220 CIA /YES, INVERT IT BACK 230 TAD I DIVIDE /RESTORE LOST VALUE 240 DCA REM /SAVE AS REMAINDER 250 TAD QUO /GET THE QUOTIENT 260 ISZ DIVIDE /BUMP PAST ARGUMENT 270 JMP I DIVIDE /RETURN 280 290 BUFCNT, .-. /BUFFER COUNTER 300 BUFPTR, .-. /BUFFER POINTER 310 DECSW, .-. /LEADING ZERO SWITCH 320 DECTMP, .-. /TEPMPORARY 330 REM, .-. /REMAINDER 340 QUO, .-. /QUOTIENT 350 360 CREMSG, TEXT " ^C^REATED%" 370 380 PAGE 390 EJECT 400 / P?S/8 FIXED FILE OUTPUT ROUTINE. 410 420 / CALL WITH: 430 440 / TAD CHAR /AC CONTAINS LATEST CHARACTER TO OUTPUT 450 / JMS I (PFFOUT) /CALL ROUTINE 460 / JMP FILEFULL /THE FILE BECAME FULL AND WAS CLOSED OUT 470 / JMP FILEOK /FILE IS STILL ACTIVE 480 490 / FILES WILL BE CLOSED OUT IF: 500 510 / A) A NON- IS PASSED AND THERE IS ONLY ROOM ENOUGH FOR THE 520 / NON- CHARACTER AND AN ADDITIONAL CHARACTER AND . 530 / AN WILL BE AUTOMATICALLY INSERTED TO PRESERVE THE INTEGRITY 540 / OF THE FILE ALONG WITH AN TO CLOSE IT. THE FILE WILL ALSO 550 / BE WRITTEN OUT TO THE SYSTEM DEVICE ACCORDING TO THE PRIOR 560 / INITIALIZATION (SEE "PFFINIT"). 570 580 / B) AN CHARACTER (0000) IS PASSED AND THERE IS LESS ROOM THAN 590 / "EOLPROT" LEFT IN THE FILE. AN WILL BE INSERTED INTO THE FILE 600 / AND IT WILL BE CLOSED AND WRITTEN OUT TO THE SYSTEM DEVICE ACCORDING 610 / TO THE PRIOR INITIALIZATION (SEE "PFFINIT"). 620 630 / C) AN CHARACTER (4000) IS PASSED. IF THE PREVIOUS CHARACTER WAS 640 / NOT AN CHARACTER, ONE WILL BE INSERTED BEFORE AN IS 650 / INSERTED. THE FILE WILL BE CLOSED AND WRITTEN OUT TO THE SYSTEM 660 / DEVICE ACCORDING TO THE PRIOR INITIALIZATION (SEE "PFFINIT"). 670 680 PFFOUT, .-. /FIXED FILE OUTPUT ROUTINE 690 DCA PFFLATEST /SAVE LATEST CHARACTER 700 TAD PFFLATEST /GET IT BACK 710 SNA /IS IT ? 720 JMP PFFEOL /YES 730 SPA CLA /IS IT ? 740 JMP PFFCLOSE /YES 750 TAD PFFLATEST /NO, GET THE CHARACTER 760 AND [77] /JUST IN CASE 770 JMS PFFSTORE /STORE IN FILE BUFFER 780 TAD PFFPTR /GET THE INSERTION POINTER VALUE 790 TAD (5) /ADD ON ULTIMATE PROTECTION VALUE 800 CIA /INVERT FOR TESTING 810 TAD I [FILBUFFER+3777] /COMPARE TO FILE POINTER LIMIT VALUE 820 SMA SZA CLA /SKIP IF FILE IS ABSOLUTELY FULL 830 JMP PFFOK /JUMP IF STILL SOME EXTRA ROOM 840 JMS PFFOEOL /STORE CHARACTER TO PRESERVE FILE INTEGRITY 850 JMP PFFWRITE /CONTINUE THERE 860 EJECT 870 PFFEOL, JMS PFFOEOL /OUTPUT CHARACTER 880 TAD PFFNUMBER /GET LATEST LINE NUMBER 890 TAD PFFINCREMENT /BUMP TO NEXT VALUE 900 DCA PFFNUMBER /STORE BACK FOR NEXT TIME 910 TAD (PFFLEFT) /RESET THE 920 DCA PFFPUT /CO-ROUTINE 930 TAD I [FILBUFFER+3776] /GET TEXT POINTER 940 TAD EOLPROTECTION /ADD ON PROTECTION VALUE 950 CIA /INVERT FOR TESTING 960 TAD I [FILBUFFER+3777] /COMPARE TO POINTER LIMIT 970 PF7700, SMA CLA /SKIP IF TOO FULL 980 JMP PFFOK /JUMP IF STILL ENOUGH ROOM 990 SKP /FALL INTO ROUTINE 1000 PFFCLOS,TAD PFFPREVIOUS /GET PREVIOUS CHARACTER 1010 SZA CLA /SKIP IF IT WAS 1020 JMS PFFOEOL /STORE CHARACTER TO PRESERVE FILE INTEGRITY 1030 PFFWRIT,TAD I [FILBUFFER+3776] /GET FREE TEXT POINTER 1040 TAD (-FILBUFFER) /COMPARE TO EMPTY VALUE 1050 SNA CLA /SKIP IF OTHERWISE 1060 JMP PFFEMPTY /JUMP IF FILE IS EMPTY