मेमोरी में दो (सहेजे गए) Apple II BASIC प्रोग्राम मर्ज करें

image

ZX स्पेक्ट्रम में स्टोरेज मीडिया से दो बेसिक प्रोग्राम को मर्ज करने की क्षमता थी, ताकि टेप में सेव की गई दो अलग-अलग बेसिक लिस्टिंग को पहले लोड किया जा सके और फिर मर्ज किया जा सके, जिससे दोनों बेसिक प्रोग्राम का संयोजन हो सके।

उदाहरण के लिए
HELLO.BAS

और WORLD.BAS

यदि

का उपयोग करके लोड किया जाता है तो परिणाम मिलता है

मैं इसे कैसे कर सकता हूं एप्पल द्वितीय? दूसरे शब्दों में, क्या एक अलग फ़ाइल (डिस्क या टेप पर) में रखे गए बेसिक कोड के साथ बेसिक प्रोग्राम (पहले से ही मेमोरी में) को प्रभावी ढंग से पैच करने के लिए कोई तंत्र है?

कोई मर्ज कमांड 1 नहीं लगता है , बस लोड करें, सेव करें, कैटलॉग करें, अनलॉक करें, इत्यादि। दो अनुक्रमिक लोड कमांड चलाने से, पहला प्रोग्राम ओवरराइट हो जाता है, जैसे कि एक नया निष्पादित किया गया हो - जो इस प्रकार है अपेक्षित।

कुछ खोज से पता चला कि ऐसा प्रतीत होता है कि आप टेप/डिस्क से बेसिक कोड को आसानी से मर्ज नहीं कर सकते हैं। सामान्य बेसिक कमांड चेन और शायद कुछ हद तक, MERGE, AppleSoft BASIC2 में मौजूद नहीं हैं।

उस दूसरे थ्रेड से लिंक किया गया एक दिलचस्प वर्कअराउंड3 है, जो थोड़े से काम के साथ, एक समाधान हो सकता है लेकिन, जैसा कि यह खड़ा है, यह एक अलग मुद्दे से निपटता है (और बाद में जंजीर वाले बेसिक कोड के "लोड" पिछले बेसिक कोड को ओवरराइट कर देते हैं)। मैं वास्तव में दो BASIC प्रोग्रामों को एक साथ जोड़ने और उनके बीच नियंत्रण पारित करने के बजाय कोड को मर्ज करना चाहता हूं।

FWIW, मैं वर्चुअल II एमुलेटर (और AppleSoft BASIC/DOS) पर Apple IIe ROM का उपयोग कर रहा हूं।< br>
1 अध्याय 2, डॉस कंट्रोल कमांड, एप्पलसॉफ्ट बेसिक टूलबॉक्स, 1984

2 प्रोडोस और एप्पलसॉफ्ट बेसिक एक दूसरे के मित्र नहीं हैं :(

3 चेनिंग एप्पलसॉफ्ट बेसिक में प्रोग्राम

एप्पलसॉफ्ट टूलकिट ने एम्परसेंड हुक के माध्यम से एप्पलसॉफ्ट बेसिक को कई एक्सटेंशन प्रदान किए।

रीनंबरिंग फ़ंक्शन संभवतः सबसे अधिक बार उपयोग किया गया था, लेकिन यह "होल्ड" भी प्रदान करता था और मौजूदा बेसिक प्रोग्राम को एक छिपे हुए सुरक्षित क्षेत्र में ले जाने के लिए "मर्ज" आदेश देता है, ताकि आप एक नया प्रोग्राम लोड कर सकें, और फिर प्रोग्राम को होल्ड से वापस मर्ज कर सकें, इसे बनाने से बचने के लिए मर्ज करने से पहले पुन: क्रमांकन करने की सलाह दी गई थी गड़बड़।

टूलकिट के लिए एक डिस्क छवि उदाहरण के लिए असिमोव पर उपलब्ध है।

बेसिक प्रोग्रामों को मर्ज करने के लिए कोई अंतर्निहित सुविधा नहीं है, वे टोकन रूप में संग्रहीत हैं एक साथ भर जाओ. @स्क्रस ने एक टिप्पणी में एक सरल दृष्टिकोण की पहचान की: एक भाग को टेक्स्ट फ़ाइल में सहेजें, दूसरे भाग को लोड करें, और फिर फ़ाइल से पंक्तियों को "टाइप" करने के लिए EXEC कमांड का उपयोग करें।

POKE कमांड टेक्स्ट विंडो की चौड़ाई को समायोजित करता है, और Applesoft को लाइन के बीच में लाइन ब्रेक जोड़ने से रोकने के लिए आवश्यक है। टेक्स्ट कमांड इसे रीसेट करता है। (POKE 33,73 80-कॉलम मोड में काम करता है।)

यदि आप जानना चाहते हैं कि POKE क्यों काम करता है, तो Apple ][+ ROM का प्रासंगिक अनुभाग है:

Ask AI
#1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22 #23 #24 #25 #26 #27 #28 #29 #30 #31 #32 #33 #34 #35 #36 #37 #38 #39 #40 #41 #42 #43 #44 #45 #46 #47 #48 #49 #50 #51 #52 #53 #54 #55 #56 #57 #58 #59 #60 #61 #62 #63 #64 #65 #66 #67 #68 #69 #70